Welcome 微信登录

首页 / 数据库 / MySQL / 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;Oracle 用 Function 设定JOB时间在Linux操作系统下使用Oracle 10.1g廋客户端相关资讯      Oracle教程 
  • Oracle中纯数字的varchar2类型和  (07/29/2015 07:20:43)
  • Oracle教程:Oracle中查看DBLink密  (07/29/2015 07:16:55)
  • [Oracle] SQL*Loader 详细使用教程  (08/11/2013 21:30:36)
  • Oracle教程:Oracle中kill死锁进程  (07/29/2015 07:18:28)
  • Oracle教程:ORA-25153 临时表空间  (07/29/2015 07:13:37)
  • Oracle教程之管理安全和资源  (04/08/2013 11:39:32)
本文评论 查看全部评论 (1)
表情: 姓名: 字数


评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
  • <