2010-09-28 26 views

cevap

5

Bunun yapılması için SP_ExecuteSQL'u kullanmanız gerekir. yani dinamik sorgu yürütme

Örnek: SSMS bu senaryoyu çalıştırıyorsanız

EXECUTE sp_executesql 
      N'SELECT * FROM AdventureWorks2008R2.HumanResources.Employee 
      WHERE BusinessEntityID = @level', 
      N'@level tinyint', 
      @level = 109; 
+0

bunun için işe yaramadı EXECUTE'un sp_executesql N'update @ sourceDatabase.dbo.PredictedPrices set MinPrice = MinPrice' – Michel

+0

aynı hata: '.' Yakınındaki yanlış sözdizimi – Michel

+0

@Michel - Dizeyle birleştirmeniz gerekiyor. Örnek için cevabımı görün. –

8
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; 
+2

+ 1, güzel örnek ve QUOTENAME() kullanımı –

4

, kendi veritabanı için komut için bir değişken (Sorgu menüsü altında bulunur) SQLCMD Mode kullanabilirsiniz isim:

:setvar sourceDatabase YourDatabaseName 

update $(sourceDatabase).dbo.PredictedPrices 
    set ... 
+0

Nice ........... – Michel

İlgili konular