Oracle的存储过程怎么写呀?


给你一个例子:
/* 存储过程返回数据集 */

/* 1.建立带ref cursor定义的包和包体及过程 */
create or replace package pkg_test
as
type myrctype is ref cursor;
procedure display(p_empno char,p_rc out myrctype);
end;

create or replace package body pkg_test
as
  procedure display(p_empno char,p_rc out myrctype)
  is
  sqlst varchar2(100);
  begin    
    if p_empno is null then
       open p_rc for select emp_name from student;
    else
       sqlst := 'select emp_name from student where emp_no = :w_empno';
       open p_rc for sqlst using p_empno;
    end if;
    end;
end;

调用:
declare
  w_rc pkg_test.myrctype;
  w_empname student.emp_name%type;
begin
  pkg_test.display('0001', w_rc);

  loop
      fetch w_rc into w_empname;
      exit when w_rc%notfound;
      dbms_output.put_line(w_empname);
  end loop;
end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值