Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用变量构造表路径_Sql_Sql Server 2008 - Fatal编程技术网

Sql 使用变量构造表路径

Sql 使用变量构造表路径,sql,sql-server-2008,Sql,Sql Server 2008,我有一个在多个环境中运行的查询脚本工具,其中有许多脚本内引用,指向运行脚本的数据库。我不需要在运行时手动编辑每个实例,而是希望在脚本的顶部设置一个变量,这样数据库值可以分配一次 我将声明变量,以便: DECLARE @db VARCHAR(25) = 'some database name' 然后我想在对表路径的引用中使用该变量,例如: SELECT 1 FROM @db.sys.partitions 这样可能吗?如果是的话,如何建造?谢谢。以下动态SQL应该适合您: declare @sq

我有一个在多个环境中运行的查询脚本工具,其中有许多脚本内引用,指向运行脚本的数据库。我不需要在运行时手动编辑每个实例,而是希望在脚本的顶部设置一个变量,这样数据库值可以分配一次

我将声明变量,以便:

DECLARE @db VARCHAR(25) = 'some database name'
然后我想在对表路径的引用中使用该变量,例如:

SELECT 1 FROM @db.sys.partitions

这样可能吗?如果是的话,如何建造?谢谢。

以下动态SQL应该适合您:

declare @sql_command nvarchar(max)
declare @db varchar(25)
select @db = 'some database name'

select @sql_command = 'SELECT top 1 * FROM '+ @db + '.sys.partitions'
execute sp_executesql @sql_command

您可以像这样执行动态sql:
exec('SELECT 1 FROM'+@db+'.sys.partitions')
Guys,感谢您的响应,但是我在尝试使用exec和SQLCMD时遇到了麻烦,因为我脚本中的一些引用嵌入到了其他函数中。最后我做了:声明@db VARCHAR(25)=“some database name”EXEC('USE'+@db),然后缩短表路径。