2014-11-04 107 views
0

我想DECLARE表中的動態SQL變量。 基本上我有這樣的從表中聲明動態變量

City BranchID Name 
London 101  London Branch 
Munich 102  Munich Branch 

一個「假設」表我已經嘗試過這樣的:

DECLARE @Cit varchar(75) 
SET @Lob = 'London' 

SET @ID= 'SELECT BranchID FROM dbo.assumptions WHERE city = @city' 
SET @Name= 'SELECT Name FROM dbo.assumptions WHERE city= @city' 

EXECUTE sp_executesql @ID, N'@city nvarchar(75)', @city= @city 
EXECUTE sp_executesql @Name_Net, N'@city nvarchar(75)', @city= @city 

這給了我正確的結果 101和倫敦分行

事情是我想在稍後使用這些變量例如

SELECT * From Sales where BranchID = @ID 

我知道該怎麼做。但現在這給我

SELECT * From Sales where BranchID = SELECT BranchID FROM dbo.assumptions WHERE city = 'London' 

這當然是行不通的。我需要@ ID導致'101'

任何想法?

回答

0
DECLARE @city VARCHAR(75), 
     @string1 NVARCHAR(MAX), 
     @string2 NVARCHAR(MAX), 
     @ID INT, 
     @Name VARCHAR(100) 

SET @string1= 'SELECT @ID = BranchID FROM dbo.assumptions WHERE city = @city' 
SET @string2= 'SELECT @Name = Name FROM dbo.assumptions WHERE city= @city' 

EXECUTE sp_executesql @string1, N'@ID int output, @city nvarchar(75)',@ID OUTPUT, @city= @city 
EXECUTE sp_executesql @string2, N'@Name varchar(100) output, @city nvarchar(75)',@Name OUTPUT, @city= @city 

SELECT @ID,@Name 

附:可能會有一些編譯錯誤,因爲我不知道這個表實際上是

+0

不知道如何,但它工作:)謝謝! – Johanna 2014-11-04 13:01:00

+0

這是魔術:)歡迎你 – tungula 2014-11-04 13:22:57

+0

它必須是:p - – Johanna 2014-11-04 13:32:36

0

使用子查詢

SELECT * From Sales where BranchID in(SELECT BranchID FROM dbo.assumptions WHERE city = 'London') 
+0

嗨,謝謝你的回答。 這對我的具體例子來說可以。 另一個例子是 SELECT *,@ID作爲ID從銷售 – Johanna 2014-11-04 10:45:19