包用于在邏輯上組合過程和函數,它由包規范和包體兩部分組成。
1)、我們可以使用create package命令來創建包,如:
i、創建一個包sp_package
ii、聲明該包有一個過程update_sal
iii、聲明該包有一個函數annual_income
--聲明該包有一個存儲過程和一個函數
create package sp_package is
procedure update_sal(name varchar2, newsal number);
function annual_income(name varchar2) return number;
end;
??
2)、建立包體可以使用create package body命令
給包sp_package實現包體
CREATE OR REPLACE PACKAGE BODY SP_PACKAGE IS
--存儲過程
PROCEDURE UPDATE_SAL(NAME VARCHAR2, NEWSAL NUMBER) IS
BEGIN
UPDATE EMP SET SAL = NEWSAL WHERE ENAME = NAME;
COMMIT;
END;
--函數
FUNCTION ANNUAL_INCOME(NAME VARCHAR2) RETURN NUMBER IS
ANNUAL_SALARY NUMBER;
BEGIN
SELECT SAL * 12 + NVL(COMM, 0) INTO ANNUAL_SALARY FROM EMP WHERE ENAME = NAME;
RETURN ANNUAL_SALARY;
END;
END;
/
????
3)、如何調用包的過程或是函數
當調用包的過程或是函數時,在過程和函數前需要帶有包名,如果要訪問其它方案的包,還需要在包名前加方案名。如:
--調用存儲過程
SQL> exec sp_package.update_sal('SCOTT', 8888);
--調用函數
var income NUMBER;
CALL sp_package.ANNUAL_INCOME('SCOTT') INTO:income;
print income;
參見:http://www.cnblogs.com/linjiqin/archive/2012/02/24/2367167.html