2014-11-04 4 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 и London Branch

вещь Я хочу использовать эти переменные позже, например,

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 

P.S. Может быть какая-то ошибка компиляции, так как я не имею этих таблиц

+0

Не знаю как, но это работает :) Спасибо! – Johanna

+0

Это волшебство :) добро пожаловать – tungula

+0

Это должно быть: p - – Johanna

0

Используйте подзапрос

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

Привет, спасибо за ваш ответ. Это было бы хорошо для моего конкретного примера. Другим примером может быть SELECT *, @ID как ID Из ПРОДАЖИ – Johanna