调用Oracle存储过程返回结果集

--1、Oracle存储过程建立
connect system/manager@dbserver;

--1.1、先建包

CREATE OR REPLACE PACKAGE pkg_landwind
     AS
   TYPE myrctype IS REF CURSOR;
    END;
/
grant execute on PKG_LANDWIND to role_examrpt;

--1.2、建存储过程,本例是把过程建在包外

create or replace procedure
       cs_get_apply_dataset(
       iv_app_no in varchar2,    --申请单号
       outset out system.pkg_landwind.myrctype) is
ls_sql         varchar2(2000);
begin
ls_sql:='
select a.exam_no,a.exam_class,a.exam_sub_class,
       b.exam_item_no,b.exam_item
   from exam.exam_appoints a,exam.exam_items b
   where a.exam_no=b.exam_no and
         a.exam_no=:iv_app_no';
   OPEN   outset   FOR   ls_sql USING   iv_app_no;
end;
/
grant execute on cs_get_apply_dataset to role_examrpt;
DROP PUBLIC SYNONYM CS_GET_APPLY_DATASET ;
CREATE  PUBLIC SYNONYM CS_GET_APPLY_DATASET FOR SYSTEM.CS_GET_APPLY_DATASET;

--2、PB下的调用方法
调用方式一、新建数据窗口,data source选stored procedure,......
调用方式二、PowerScript脚本下调用:
//声明

string ls_tmp  //申请单号
string ls_exam_no[],ls_exam_class[],ls_exam_sub_class[],ls_exam_item[]
integer li_exam_item_no[],i=1
DECLARE prc_tmp PROCEDURE FOR SYSTEM.CS_GET_APPLY_DATASET  (:ls_tmp);
//执行
execute prc_tmp;
//取数据,参数要与过程中的SQL指定的列相匹配
do
 fetch prc_tmp into :ls_exam_no[i],:ls_exam_class[i],:ls_exam_sub_class[i],:li_exam_item_no[i],:ls_exam_item[i];
 i ++
loop while sqlca.sqlcode=0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值