【发布时间】:2018-09-27 16:33:04
【问题描述】:
动态SQL更新语句如下:
EXECUTE IMMEDIATE 'UPDATE '||l_prefix||'CRS_CUSTOMERS SET CUSTOMER_SOURCE_REF_ID = '||i.CUSTOMER_REF_ID||' WHERE CUSTOMER_ID = '||i.CUSTOMER_ID;
l_prefix是表名前缀的参数,赋值为T_
i.CUSTOMER_REF_ID 和 i.CUSTOMER_ID 是从游标中获取的字段。
动态语句在获取数据时遇到错误ORA-00904: invalid identifier。
当以静态方式重写时,查询工作正常:
UPDATE T_CRS_CUSTOMERS SET CUSTOMER_SOURCE_REF_ID = i.CUSTOMER_REF_ID WHERE
CUSTOMER_ID = i.CUSTOMER_ID;
我知道动态SQL的串联一定有问题,只是无法确定任何问题,因为编译很好。
【问题讨论】:
-
把
dbms_output.put_line替换成execute immediate,用括号看看输出查询,和静态更新语句匹配吗?
标签: oracle dynamic-sql ora-00904 execute-immediate