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

Posted

技术标签:

【中文标题】在 Alter table 脚本中使用绑定变量作为表名【英文标题】:Using bind variable as table name in Alter table script 【发布时间】:2018-05-21 09:52:20 【问题描述】:
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】:

其实是INSERT中的单个代码造成的

按如下更正:

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

【讨论】:

以上是关于在 Alter table 脚本中使用绑定变量作为表名的主要内容,如果未能解决你的问题,请参考以下文章

我怎么知道我的 MySQL alter table 语句正在工作? [关闭]

我怎么知道我的 MySQL alter table 语句正在工作? [关闭]

如何在 NOT IN 子句中使用字符串作为变量?

如何在SQL中用ALTER TABLE语句修改表中的列名?

oracle中比较alter table t move 和alter table t shrink space

ALTER TABLE CREATE CONSTRAINT IF NOT EXIST 可能吗?