oracle存储过程的动态游标出错

wangyi123 2010-05-31 12:29:48
create or replace procedure prc
AS
sqlstr varchar2(3000);
type resultcur is ref cursor;
begin
sqlstr := ‘select * from table名 where 条件’;
open resultcur for sqlstr; ---此处报错
......
end prc;

Compilation errors for PROCEDURE PRC
Error: PLS-00330: invalid use of type name or subtype name
Line: 148
Text: open resultcur for sqlstr;

请问大侠们,这是什么错误,怎么解决,请赐教!
...全文
94 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
luoyoumou 2010-05-31
  • 打赏
  • 举报
回复
-- 给个例子给你,自己看着办吧:

-----------------------------------------------------------------------------
create or replace package pkg_emp_info
as
type myrctype is ref cursor;
procedure emp_info_proc(v_empno in number default 0,v_ename in VARCHAR2, v_deptno number default 0,p_rc out myrctype);
end pkg_emp_info;
/

create or replace package body pkg_emp_info
as
procedure emp_info_proc(v_empno in number default 0,v_ename in VARCHAR2, v_deptno number default 0,p_rc out myrctype)
is
sqlstr VARCHAR2(2000);
begin

sqlstr :=
'SELECT * from emp e where 1=1';

if v_empno<>0 then
sqlstr := sqlstr||' and e.empno='||v_empno;
end if;

if v_ename<>'' then
sqlstr := sqlstr||' and e.ename like ''%||v_ename||%''';
end if;

if v_deptno<>0 then
sqlstr := sqlstr||' and e.deptno='||v_deptno;
end if;

sqlstr := sqlstr||' ORDER BY e.empno ';

OPEN p_rc FOR sqlstr;-- USING v_mobile; --,v_fromDate,v_fromDate,v_toDate,v_toDate,v_sign,v_sign;

end emp_info_proc;
end pkg_emp_info;
/
wangyi123 2010-05-31
  • 打赏
  • 举报
回复
2楼正确,谢谢啦!
duqiangcise 2010-05-31
  • 打赏
  • 举报
回复
create or replace procedure prc
AS
sqlstr varchar2(3000);
type resultcur is ref cursor;
l_cursor resultcur ;
begin
sqlstr := 'select * from table名 where 条件';
open l_cursor for sqlstr; ---此处报错
......
end prc;

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧