首页 > 解决方案 > 在 Alter table 脚本中使用绑定变量作为表名

问题描述

FOR k in c2 LOOP
         l_sql := 'ALTER TABLE :TABLE_NAME DISABLE CONSTRAINT 
                  :CONSTRAINT_NAME CASCADE';
         l_sql :='INSERT INTO TMP_CONSTRAINT (TABLE_NAME,CONSTRAINT_NAME) 
                  VALUES ('':TABLE_NAME'', '':CONSTRAINT_NAME'')';
         EXECUTE IMMEDIATE l_sql USING k.TABLE_NAME, k.CONSTRAINT_NAME;
END LOOP;

以上动态 SQL 从游标中获取变量并相应地禁用约束并将记录插入临时表。我"bind variable does not exist"在更新语句中收到错误。

标签: constraintsdynamic-sqlbind-variables

解决方案


它实际上是由中的单个代码引起的 INSERT

更正如下:

l_sql :='INSERT INTO TMP_ENABLED_CONSTRAINT (TABLE_NAME,CONSTRAINT_NAME) VALUES (:TABLE_NAME ,:CONSTRAINT_NAME)';


推荐阅读