W
Walone
Unregistered / Unconfirmed
GUEST, unregistred user!
<font color=red face=隶书> 救命! oracle8中,如何update用动态sql查询出的数据集?</font>(200分)<br />这两天在用动态sql写存储过程,因为,我临要在过程中建临时表。
用到cursor时有点问题。
记得静态sql中,可以在定义了cursor for update之后,
用where current of 去更新。
但是,在动态sql中,open 出来的cursor,
再在loop里,用where current of 语句,不认这样的cursor
想写成sql字符串,用dbms_sql.parse()来做,
然后把cursor变量用已打开的cursor代换
如:
v_sqlstr:='update tab_pd set hipdbh =hipdbh+1
where current of :v_cur';
dbms_sql.parse(v_cur2,v_sqlstr,dbms_sql.v7);
dbms_sql.bind_variable(v_cur2,':cur',v_cur);
其中,cursor是先用dbms_sql.open_cursor打开的,
后又用 动态sql语句做了select,
错误提示:
ORA-00936: 缺少表达式
ORA-06512: 在"SYS.DBMS_SYS_SQL", line 491
ORA-06512: 在"SYS.DBMS_SQL", line 32
不明所以,请高人指点,如何更新用动态sql查找出来的记录。
可见<a href="DispQ.asp?LID=279568">这里</a>
用到cursor时有点问题。
记得静态sql中,可以在定义了cursor for update之后,
用where current of 去更新。
但是,在动态sql中,open 出来的cursor,
再在loop里,用where current of 语句,不认这样的cursor
想写成sql字符串,用dbms_sql.parse()来做,
然后把cursor变量用已打开的cursor代换
如:
v_sqlstr:='update tab_pd set hipdbh =hipdbh+1
where current of :v_cur';
dbms_sql.parse(v_cur2,v_sqlstr,dbms_sql.v7);
dbms_sql.bind_variable(v_cur2,':cur',v_cur);
其中,cursor是先用dbms_sql.open_cursor打开的,
后又用 动态sql语句做了select,
错误提示:
ORA-00936: 缺少表达式
ORA-06512: 在"SYS.DBMS_SYS_SQL", line 491
ORA-06512: 在"SYS.DBMS_SQL", line 32
不明所以,请高人指点,如何更新用动态sql查找出来的记录。
可见<a href="DispQ.asp?LID=279568">这里</a>