一女同事问我oracle 存储过程的问题,后我问及package、package body 关系以及理解,开始说可以说出个一二,但是也还是有迷糊的地方,后归纳理清了下。
简单理解就是:
package 类似声明(接口)
package body,类似实现
package body,类似实现
例:
create or replace package test_package is
--purpose:package include function interface
function proc_20101230(aNum in Integer,bNum in Integer) return integer;
end test_package;
--purpose:package include function interface
function proc_20101230(aNum in Integer,bNum in Integer) return integer;
end test_package;
CREATE OR REPLACE PACKAGE BODY test_package IS
--implement the interface in the package
FUNCTION proc_20101230(
aNum in Integer ,
bNum in Integer
)
return integer
as
begin
return aNum + bNum;
END;
END test_package;
--implement the interface in the package
FUNCTION proc_20101230(
aNum in Integer ,
bNum in Integer
)
return integer
as
begin
return aNum + bNum;
END;
END test_package;
在PL/SQL中,FUNCTION 和 PROCEDURE都可以通过TEST来调试。
此外FUNCTION可以在SQL 窗口中,类似
select proc_20100907_03(1,2) from dual; 调用
PROCEDURE 可以在命令窗口中,类似
SQL> exec test_procedure;
PL/SQL procedure successfully completed 调用
PL/SQL procedure successfully completed 调用