pl/sql 包
包装中使用REF光标
===============================
包
-----------------
create or replace package pack1
as
type mycur is ref cursor;
end;
注意:-由于软件包不包含任何过程或功能,因此不需要创建软件包主体。
----------------------------
在程序中使用(全球)引用
-------------------------------------------------- -------------------
create or replace procedure testproc
(
no emp.deptno%type,
rec out pack1.mycur
)
is
begin
open rec for select * from emp where deptno=no;
end ;
--------------------------------
从不一致的块调用过程
=============================================
declare
mm pack1.mycur;
ll emp%rowtype;
begin
testproc(10,mm);
loop
fetch mm into ll ;
exit when mm%notfound;
DBMS_OUTPUT.PUT_LINE(ll.empno||' ' ||ll.ename);
end loop;
end;
包装中的功能超载。
================================
包
----------------
CREATE OR REPLACE PACKAGE PKG_OVRLD
AS
FUNCTION TRANS_DATE(DT IN DATE)RETURN NUMBER;
FUNCTION TRANS_DATE(DT IN NUMBER)RETURN DATE;
END PKG_OVRLD;
包装体
------------------------
CREATE OR REPLACE PACKAGE BODY PKG_OVRLD AS
FUNCTION TRANS_DATE(DT IN DATE)RETURN NUMBER IS
BEGIN
RETURN ROUND((DT-TO_DATE('01011970','MMDDYYYY'))*86400);
END TRANS_DATE;
FUNCTION TRANS_DATE(DT IN NUMBER)RETURN DATE IS
BEGIN
RETURN (TO_DATE('01011970','MMDDYYYY') +(DT/(86400)));
END TRANS_DATE;
END PKG_OVRLD;
还要检查
包装-4翻译自: https://bytes.com/topic/oracle/insights/746994-pl-sql-package-3-a
pl/sql 包

被折叠的 条评论
为什么被折叠?



