在Alter表脚本中使用绑定变量作为表名

时间:2018-05-21 09:52:21

标签: constraints dynamic-sql bind-variables

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"

1 个答案:

答案 0 :(得分:0)

它实际上是由INSERT

中的单个代码引起的

按以下方式进行了更正:

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