【发布时间】:2017-05-02 20:06:07
【问题描述】:
我有一个非常通用/动态的过程,我将表名作为参数传递并使用 EXECUTE IMMEDIATE 动态执行查询。我需要遍历游标并更新每条记录。有没有办法不必对我的表名进行硬编码??
我试过了,但它不起作用:
open cur for v_sql;
loop
fetch cur into v_recid;
EXIT WHEN cur%NOTFOUND;
EXECUTE IMMEDIATE 'update '||p_table||q'[ set status = 'I' where current of cur]';
end loop;
close cur;
【问题讨论】:
-
您是否考虑过使用
ROWID作为更新密钥? -
您遇到的错误是什么?如果您使用“current of”,则与游标关联的查询需要具有“for update”子句。