如果有许多存储过程,那么你可能需要用到存储过程包。在Oracle中使用存储过程包首先要先创建package声明存储过程,之后创建package body写存储过程的具体内容。
(1)包package声明或定义:包定义部分是创建包的规范说明,声明包内数据类型、变量、常量、游标等元素。
这部分也是为使用者提供了透明的接口。
(2)包体packpage body:包体是包定义部分的具体实现。
(3)将有联系的对象打成包,方便使用
(4)包中对象包括储存过程,函数,游标,自定义类型和变量,可以在PL_SQL块中应用这些对象.
包
包定义
create or replace package pkg01 as /* TODO enter package declarations (types, exceptions, methods etc) here */ PROCEDURE CALLPROC01(name varchar2); end pkg01; |
包体
create or replace package body pkg01 as procedure callproc01(name in varchar2) as res varchar2(20); begin res :='success'; -- TODO: PROCEDURE PKG01.CALLPROC01所需的实施 --DELETE FROM PROC WHERE ID=2; INSERT INTO PROC VALUES(2,name,sysdate); COMMIT; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('异常代码:' + sqlcode); --sqlcode代表异常代码 DBMS_OUTPUT.PUT_LINE('异常信息:' + sqlerrm); --sqlerrm代表异常信息 end callproc01; end pkg01; |
存储过程
create or replace procedure proc01 ( name in varchar2 , res out varchar2 ) as begin res :='success'; DELETE FROM PROC WHERE ID=1; INSERT INTO PROC VALUES(1,name,sysdate); commit; EXCEPTION WHEN OTHERS THEN res := 'insert failed'; return; end proc01; |