在Oracle8i中
小弟现在正在学编写存储过程,现在我建一个存储过程用来返回记录集
创建包
create or replace package typecur
as
type cursortype is ref cursor;
end;
创建存储过程
create or replace procedure selectdata
(p_cursor in out typecur.cursortype)
as
begin
 open p_cursor for select * from tast;
end;然后我在SQL*plus调用
execute selectdata;
但是提示错误:
BEGIN selectdata; END;      *
ERROR 位于第 1 行:
ORA-06550: 第 1 行, 第 7 列:
PLS-00905: 对象 DHY.SELECTDATA 无效
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
请各位高手帮帮我啊!谢谢您啦

解决方案 »

  1.   

    好像是用户的问题,编译的时候可能编译到SYS用户下了,你可以看一下,或者切换到sys用户执行一下试试或者创建的时候这样写:
    create or replace procedure DHY.selectdata
    (p_cursor in out typecur.cursortype)
    as
    begin
     open p_cursor for select * from tast;
    end;
      

  2.   

    既然用了package了,为何不把你的过程也放在package里呢?
    你的过程是有参数的
    你怎么不把游标变量传进去?
    晕倒啊
    declare 
    p_cursor typecur.cursortype;
    begin
    selectdata(p_cursor);
    //其它处理
    end;
      

  3.   

    估计是一楼所说的原因,blob字段问题...