function、cursor 和EXECUTE IMMEDIATE的问题,谢谢同志们,快疯了。

aassdd 2007-08-20 04:28:31
现在想将SQL语句传入函数中,返回cursor
create or replace function f_reCursor(sSql in varchar2) return CURSOR is
cur CURSOR;
begin
EXECUTE IMMEDIATE 'cursor ' ||cur|| ' is ' || sSql;
或(EXECUTE IMMEDIATE 'cursor cur is ' || sSql; )也试过
return(cur);
end f_reCursor;

提示以下错误::::
FUNCTION SDE.F_RECURSOR 编译错误

错误:PLS-00201: 必须声明标识符 'CURSOR'
行:1
文本:create or replace function f_reCursor(sSql in varchar2) return CURSOR is

错误:PL/SQL: Compilation unit analysis terminated
行:0
文本:create or replace function f_reCursor(sSql in varchar2) return CURSOR is
...全文
562 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
aassdd 2007-08-23
  • 打赏
  • 举报
回复
OK,谢谢各位了。
icedut 2007-08-21
  • 打赏
  • 举报
回复
f_reCursor 返回的是SYS_REFCURSOR


declare
p_c sys_refcursor;
v_rec t1%rowtype;
begin
p_c=f_reCursor('select id,name from t1 where id<100');
loop
fetch p_c into v_rec;
EXIT WHEN p_c%NOTFOUND;
dbms_output.put_line(v_rec.id);
end loop;
end;
aassdd 2007-08-21
  • 打赏
  • 举报
回复
错误:PLS-00487: 对变量 'MY_CUR' 的引用无效
aassdd 2007-08-21
  • 打赏
  • 举报
回复
up
aassdd 2007-08-21
  • 打赏
  • 举报
回复
多谢了。
呵呵,没用过。
怎么用?
for my_cur in f_reCursor('select id,name from t1 where id<100') loop
update table2 set name='aaa',city='bbb' where id=my_cur.id;
end loop;
临摹 2007-08-20
  • 打赏
  • 举报
回复
Create or REPLACE FUNCTION f_reCursor(sSql in varchar2)
RETURN SYS_REFCURSOR
AS
cur SYS_REFCURSOR;
BEGIN
OPEN cur FOR sSql;
RETURN cur;
END f_reCursor;
aassdd 2007-08-20
  • 打赏
  • 举报
回复
这么早就都下班了?

17,086

社区成员

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

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