1.定义包头
create or replace package emppackage is
type RefCursorType is ref cursor; //定义数据类型
procedure show(emps out RefCursorType); //定义存储过程
function <FunctionName>(<Parameter> <Datatype>) return <Datatype> //定义函数
end emppackage;
2.实现包体
create or replace package body emppackage is
procedure show(refEmp out RefCursorType) is
注//变量在此声明
begin
open refEmp for select * from emp;
end show;
end emppackage;
//
3.程序块测试
declare
type refempcursor is ref cursor;
refemp refempcursor;
v_emp emp%rowtype;
begin
mypackage.show(refemp); //调用包里存储过程
loop
fetch refemp into v_emp; //注: 动态游标(ref游标)--不能用for循环,因为for循环会自动打开游,而ref游标是动态的游标,打开后由于for循环再次打开会找不到记录
dbms_output.put_line(v_emp.ENAME||v_emp.JOB);
exit when refemp%notfound;
end loop;
close refemp;
end;