SQL 用SQL生成SQL,你想生成动态的 SQL 语句,例如你的目的是将某些维护任务自动化。你希望完成 3 项任务:计算各个表的行数,禁用各个表的外键约束,根据表里的数据生成插入脚本。
SQL 用SQL生成SQL 问题描述
你想生成动态的 SQL 语句,例如你的目的是将某些维护任务自动化。你希望完成 3 项任务:计算各个表的行数,禁用各个表的外键约束,根据表里的数据生成插入脚本。
SQL 用SQL生成SQL 解决方案
基本思路是使用字符串拼接 SQL 语句,通过查询某些表来获取需要填入的数据(例如数据库对象名称)。注意,这些查询仅生成 SQL 语句。你需要手动或者通过其他方式运行脚本,以执行这些 SQL 语句。下面的示例都是针对 Oracle 数据库的。对于其他数据库而言,做法应该极其相似,但是数据字典表的名称以及日期格式之类的细节或有不同。下面的输出结果来自我的笔记本电脑上的一个 Oracle 实例。你的计算机上的执行结果当然会有所不同。
SQL 用SQL生成SQL 扩展知识
若要创建可移植的脚本(如用于在多个环境下进行测试),用 SQL 生成 SQL 的做法尤其有用。另外,正如上面的例子所示,对于执行批处理维护任务以及一次性找出与多种对象相关的信息,用 SQL 生成 SQL 的做法也非常有用。这种方法简单易学,你练习的次数越多,它就会变得越简单。本例只是希望向你展示一下如何创建属于你自己的动态 SQL 脚本,坦白来说,这并不难做到。你只需要不断尝试就能熟练掌握其中的技巧。