1、定義
包:(1)被組合在一起的相關對象的集合,當包中任何函數或預存程序被調用,包就被載入入記憶體。
(2)包中的任何函數或預存程序的子程式訪問速度將大大加快。
(3)包由兩個部分組成:包頭和包體,在包頭中描述變數、常量、遊標、和子程式。
(4)包體由完整的子程式,遊標定義組成。
2、建立包
包頭:
CREATE OR REPLACE PACKAGE test_pkg IS
PROCEDURE update_sal(e_name VARCHAR2,newsal NUMBER);
FUNCTION ann_income(e_name VARCHAR2) RETURN NUMBER;
END;
--定義了一個函數和一個過程
包體:
CREATE OR REPLACE PACKAGE BODY test_pkg IS
PROCEDURE update_sal(e_name VARCHAR2,newsal NUMBER)
IS
BEGIN
UPDATE emp1 SET sal=newsal WHERE ename=e_name;
END;
FUNCTION ann_income(e_name VARCHAR2)
RETURN NUMBER IS
annsal NUMBER;
BEGIN
SELECT sal*12+NVL(comm,0) INTO annsal FROM emp1
WHERE ename=e_name;
RETURN annsal;
END;
END;
--實現上面的函數和過程
3、調用包
對包內共有元素的調用格式為:包名,元素名稱。
對包內程序呼叫
SQL> exec test_pkg.update_sal('SCOTT',1200);
對包內函數調用
DECLARE
v_annsal NUMBER(7,2);
BEGIN
v_annsal:=test_pkg.ann_income('SCOTT');
dbms_output.put_line('年薪為:'||v_annsal);
END;
4、刪除包
我們可以 DROP PACKAGE 命令對不需要的包進行刪除,文法如下:
DROP PACKAGE [BODY[user.]package_name;
作者:51cto Oracle小混子
查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/