oracle select 存储过程 游标,Oracle用存储过程返回游标

传出游标过程:

create or replace procedure pub_mes2erpauto_cur_kt(i_flag in varchar2,

res    out varchar2,

o_cur  out sys_refcursor) is

v_class    varchar2(20);

v_classstr varchar2(100);

v_mmark    varchar2(20);

v_mmarkstr varchar2(100);

v_mtype    varchar2(20);

v_mtypestr varchar2(100);

v_cursql   varchar2(1000);

begin

if length(i_flag) = 3 then

v_class := substr(i_flag, 1, 1);

v_mmark := substr(i_flag, 2, 1);

v_mtype := substr(i_flag, 3, 2);

RES     := 'OK';

else

res := 'ERROR';

end if;

if v_class <> '0' then

v_classstr := ' and class_id =' || v_class;

end if;

if v_mmark <> '0' then

v_mmarkstr := ' and model_flag = ''' || v_mmark || '''';

end if;

if v_mtype <> '0' then

v_mtypestr := ' and model_type = ''' || v_mtype || '''';

end if;

v_cursql := 'select pro_name

from emesp.tp_mes2erp_auto_kt

where group_flag = ''CCAUTO''' || v_classstr ||

v_mmarkstr || v_mtypestr;

open o_cur for v_cursql;exception

when others then

res := 'ERROR';

end pub_mes2erpauto_cur_kt;

调用过程:

create or replace procedure PUB_MO_mes2erpcc_KT(v_back_id in varchar2,

V_fLAG    IN VARCHAR2,

RES       OUT VARCHAR2) is

v_index_id  VARCHAR2(20);

v_startdate date;

v_mesdate   date;

v_erpdate   date;

v_sql       varchar2(1100);

-- V_CUR       sys_refcursor;

TYPE c_type IS REF CURSOR; /*定義遊標類型*/

V_CUR c_type; /*定義一個遊標*/

TYPE rule_record IS RECORD( /*定義記錄集類型*/

pro_name emesp.tp_mes2erp_auto_kt.pro_name%type);

TYPE type_ruleconf IS TABLE OF rule_record index by BINARY_INTEGER;

rowsa type_ruleconf; /*定義記錄集*/

begin

pub_mes2erpauto_cur_kt(V_FLAG, RES, V_cur);  FETCH v_cur BULK COLLECT /*批量綁定數據集*/

INTO rowsa;

for i in 1 .. rowsa.COUNT loop

begin

v_sql := 'begin ' || rowsa(i).pro_name || '  end;';

execute immediate v_sql

using in v_back_id, out res;

end;

end loop;

EXCEPTION

WHEN OTHERS THEN

RES := 'ERROR';

end PUB_MO_mes2erpcc_KT;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值