有时我需要运行相同的 SQL Server 脚本,每次将每个表名称中的一两个字母更改为每次运行脚本时都不同的值。
如何在脚本开头设置一次,这样我就不需要更改每个表名?
这是该脚本的一个简化示例,实际上它包含更多的表:
SELECT * FROM T_Atable1
WHERE ref IN (SELECT ref FROM T_Atable2)
AND customer IN (SELECT customer FROM T_Atable3)
表名称的格式为 T_,其中:
- "
T_
“是固定的
-
<id>
是表名的变量部分。在上面的例子中=“A”
-
<table name>
是表的固定名称。在上面的例子中,固定部分是“table1”,“table2”,“table3”
我怀疑我需要使用动态 SQL,但不知道如何执行此操作。
SQL Server 可以是 2003+ 的任何版本,具体取决于包含数据的系统。
您需要使用动态 SQL。
动态 SQL 就是您在 SQL 过程或应用程序中的字符串中“动态”构建查询,然后执行该字符串。
例如;
DECLARE @tableVar1 VARCHAR(255) = 'T_Atable1'
DECLARE @tableVar2 VARCHAR(255) = 'T_Atable2'
DECLARE @tableVar3 VARCHAR(255) = 'T_Atable3'
EXEC('
SELECT * FROM ' + @tableVar1 + '
WHERE ref IN (SELECT ref FROM ' + @tableVar2 + ')
AND customer IN (SELECT customer FROM ' + @tableVar3 + ')
')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)