你的i_out没有定义为包内 的游标类型,应该在declare下定义i_out pkg_test.myrctype;即可。

解决方案 »

  1.   


    SQL> declare
      2  i_out pkg_test.myrctype;
      3  i_in number:=0;
      4  begin
      5  i_out:=pkgtest.get(i_in);
      6  end;
      7  /
    i_out:=pkgtest.get(i_in);
           *
    ERROR 位于第 5 行:
    ORA-06550: 第 5 行, 第 8 列:
    PLS-00201: 必须说明标识符 'PKGTEST.GET'
    ORA-06550: 第 5 行, 第 1 列:
    PL/SQL: Statement ignored
      

  2.   

    SQL>  declare
      2   i_out pkg_test.myrctype;
      3  i_out char(500);
      4  i_in number:=0;
      5  begin
      6   pkg_test.get(i_in,:i_out);
      7  end;
      8  /
     pkg_test.get(i_in,:i_out);
     *
    ERROR 位于第 6 行:
    ORA-06550: 第 6 行, 第 2 列:
    PLS-00306: 调用 'GET' 时参数数量或类型错误
    ORA-06550: 第 6 行, 第 2 列:
    PL/SQL: Statement ignore
    能否给份正确的调用代码!!!!!!!!!
      

  3.   

    SQL>  declare
      2  i_out pkg_test.myrctype;
      3   i_in number:=0;
      4   begin
      5   pkg_test.get(i_in,i_out);
      6   end;
      7  /PL/SQL 过程已成功完成。SQL> print i_out;I_OUT
    --------------------------------------------------------------------------------
    SQL>请问为什么I_OUT为什么没有记录????
      

  4.   

    print 函数打印的是简单变量,而i_out是游标,不能print,返回记录集的存储过程一般是在应用程序中用,比如asp,vb,vc,java等(个人理解)。
      

  5.   

    那在PL/SQL中无法显示吗?????
      

  6.   

    declare
    i_out pkg_test.myrctype;
    i_in number:=0;
    v_ID student.id%type;
    v_NAME student.name%type;
    v_sex student.sex%type;
    v_address student.address%type;
    v_postcode student.postcode%type;
    v_birthday student.birthday%type;  
    begin
    pkg_test.get(i_in,i_out);
    loop
    fetch i_out into v_id,v_NAME,v_sex,v_address,v_postcode,v_birthday;
    exit when i_out%notfound;
    dbms_output.put_line(v_id||v_NAME||v_sex||v_address||v_postcode||v_birthday);
    end loop;
    end;
    /