http://spaces.msn.com/members/heilongtan/Blog/cns!1pT7T9Lx-GiDUkbf1EvYsg0Q!224.entry

解决方案 »

  1.   

    CREATE OR REPLACE PROCEDURE DT_CHEMICALLIST
     TYPE T_CURSOR IS REF CURSOR;
    BEGIN
      open T_CURSOR for select * from chemicallist;  close T_CURSOR;
       commit;
    END DT_CHEMICALLIST;
    请问我这个个过程哪错了?
      

  2.   

    CREATE OR REPLACE PROCEDURE DT_CHEMICALLIST
     TYPE T_CURSOR IS REF CURSOR;
     test_cur T_CURSOR;
    BEGIN
      open test_cur for select * from chemicallist;  close test_cur;
       commit;
    END DT_CHEMICALLIST;T_CURSOR只是游标变量类型!
      

  3.   

    还是不行啊
    我在toad的sqleditor里执行没有反映啊
      

  4.   

    CREATE OR REPLACE PROCEDURE DT_CHEMICALLIST ISTYPE T_CURSOR IS REF CURSOR;
    test_cur T_CURSOR;
    BEGIN
    open test_cur for select * from chemicallist;close test_cur;
    commit;
    END DT_CHEMICALLIST;
      

  5.   

    CREATE OR REPLACE
    package pkg_test as
    /* 定义ref cursor类型
       不加return类型,为弱类型,允许动态sql查询,
       否则为强类型,无法使用动态sql查询;
    */
      type myrctype is ref cursor; --函数申明
      function get(intID number) return myrctype;
    end pkg_test;
    /CREATE OR REPLACE
    package body pkg_test as
    --函数体
       function get(intID number) return myrctype is
         rc myrctype;  --定义ref cursor变量
         sqlstr varchar2(500);
       begin
         if intID=0 then
            --静态测试,直接用select语句直接返回结果
            open rc for select * from t_orgkind;
         else
            --动态sql赋值,用:w_id来申明该变量从外部获得
            sqlstr := 'select * from t_orgkind where org_kindid=:w_id';
            --动态测试,用sqlstr字符串返回结果,用using关键词传递参数
            open rc for sqlstr using intid;
         end if;     return rc;
       end get;end pkg_test;
    /create or replace procedure p_test(intID number , retrc out pkg_test.myrctype) as
      sqlstr varchar2(500);
    begin
         if intID=0 then
            --静态测试,直接用select语句直接返回结果
            open retrc for select * from t_orgkind;
         else
            --动态sql赋值,用:w_id来申明该变量从外部获得
            sqlstr := 'select * from t_orgkind where org_kindid=:w_id';
            --动态测试,用sqlstr字符串返回结果,用using关键词传递参数
            open retrc for sqlstr using intid;
         end if;
    end;
    /3、用pl/sql块进行测试:
    declare
      w_rc       pkg_test.myrctype; --定义ref cursor型变量  --定义临时变量,用于显示结果
      w_orgkind t_orgkind%ROWTYPE;begin
      --调用函数,获得记录集
      w_rc := pkg_test.get(0);
      loop
      --fetch结果并显示
        fetch w_rc into w_orgkind;
        exit when w_rc%NOTFOUND;
        dbms_output.put_line(to_char(w_orgkind.org_kindid,'999')||'  '||w_orgkind.org_kind);
      end loop;
    end;
    /declare
      w_rc       pkg_test.myrctype; --定义ref cursor型变量  --定义临时变量,用于显示结果
      w_orgkind t_orgkind%ROWTYPE;begin
      --调用函数,获得记录集
      p_test(0,w_rc);
      loop
      --fetch结果并显示
        fetch w_rc into w_orgkind;
        exit when w_rc%NOTFOUND;
        dbms_output.put_line(to_char(w_orgkind.org_kindid,'999')||'  '||w_orgkind.org_kind);
      end loop;
    end;
    /
      

  6.   

    我加了is了,可是我在toad里面看创建好的过程,前面有个红叉啊
      

  7.   

    1.定义一个table类型的变量
    type arrVarchar is table of VARCHAR2(30000) index by binary_integer;
    2.定义输出变量为该类型
     procedure NLSK0310(arrSASIZ_NO OUT arrVarchar)
    3.再把所需的数据集fetch到这个变量里面。