Я хочу сделать это:
update @sourceDatabase.dbo.PredictedPrices
и затем установить @sourceDatabase в качестве переменной.
@sourceDatabase
Но я не могу?
Incorrect syntax near '.'.
Есть ли другой способ?
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;
Для этого необходимо использовать SP_ExecuteSQL.т.е. динамическое выполнение запроса
SP_ExecuteSQL
Пример:
EXECUTE sp_executesql N'SELECT * FROM AdventureWorks2008R2.HumanResources.Employee WHERE BusinessEntityID = @level', N'@level tinyint', @level = 109;
Если вы запускаете этот сценарий в SSMS, вы можете использовать Режим SQLCMD (находится в меню «Запрос») для создания сценария переменной для имени вашей базы данных:
:setvar sourceDatabase YourDatabaseName update $(sourceDatabase).dbo.PredictedPrices set ...