正如jqw所讲,要用动态sql来写
这两天在用动态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查找出来的记录集。