Tsql 动态数据库名称和模式/所有者分配
我需要连续几次从另一个表更新一个表。为了使这个脚本更易于人们使用,我希望能够动态地引用它。大概是这样的:Tsql 动态数据库名称和模式/所有者分配,tsql,sql-server-2000,Tsql,Sql Server 2000,我需要连续几次从另一个表更新一个表。为了使这个脚本更易于人们使用,我希望能够动态地引用它。大概是这样的: declare @databasename sysname set @databasename = 'm2mdata01.dbo' select * from @databasename.mytable 这不管用。关于我如何做到这一点,有什么建议吗 在SQL语句中不能使用FROM子句中的变量。您必须使用动态SQL,例如: declare @databasename sysname set
declare @databasename sysname
set @databasename = 'm2mdata01.dbo'
select * from @databasename.mytable
这不管用。关于我如何做到这一点,有什么建议吗 在SQL语句中不能使用FROM子句中的变量。您必须使用动态SQL,例如:
declare @databasename sysname
set @databasename = 'm2mdata01.dbo'
EXEC ('select * from ' + @databasename + '.mytable')
在SQL语句中不能使用FROM子句中的变量。您必须使用动态SQL,例如:
declare @databasename sysname
set @databasename = 'm2mdata01.dbo'
EXEC ('select * from ' + @databasename + '.mytable')
还有其他选择吗?如果我必须编辑代码才能做到这一点,那将是一个巨大的混乱。如果数据库是SQL脚本的唯一动态组件,您可以利用
USE database
命令。但是,您也不能将变量用于它。但是,您可以在运行语句之前找到一种设置数据库的方法。还有其他选项吗?如果我必须编辑代码才能做到这一点,那将是一个巨大的混乱。如果数据库是SQL脚本的唯一动态组件,您可以利用USE database
命令。但是,您也不能将变量用于它。但是,您可能会找到一种在运行语句之前设置数据库的方法。