Mic*_*hel 6 sql t-sql sql-server sql-server-2005 dynamic-sql
我想完成这个:
update @sourceDatabase.dbo.PredictedPrices
Run Code Online (Sandbox Code Playgroud)
然后设置@sourceDatabase为变量.
但我不被允许?
Incorrect syntax near '.'.
Run Code Online (Sandbox Code Playgroud)
还有另外一种方法吗?
DECLARE @Dynsql NVARCHAR(MAX)
DECLARE @sourceDatabase sysname
DECLARE @MinPrice MONEY
SET @sourceDatabase = 'foo'
SET @MinPrice = 1.00
SET @Dynsql = N'update ' + QUOTENAME(@sourceDatabase) + '.dbo.PredictedPrices
set MinPrice = @MinPrice'
EXECUTE sp_executesql @Dynsql,
N'@MinPrice money',
@MinPrice = @MinPrice;
Run Code Online (Sandbox Code Playgroud)
要做到这一点,你需要使用SP_ExecuteSQL.即动态查询执行
例:
EXECUTE sp_executesql
N'SELECT * FROM AdventureWorks2008R2.HumanResources.Employee
WHERE BusinessEntityID = @level',
N'@level tinyint',
@level = 109;
Run Code Online (Sandbox Code Playgroud)