2016-04-18 6 views
3

У меня есть следующий пример сценария:Получить значение SQL Var сообразуйтесь на VARCHAR текста

DECLARE @lCode INT 
DECLARE @lText VARCHAR(400) 
DECLARE @lConditionName VARCHAR(40) 
DECLARE @Aux VARCHAR(400) 

SET @lCode = 1234; 
SET @lConditionName = 'Code' 

SET @Aux = '@l' + @lConditionName 

SET @lText = 'SELECT * FROM Table WHERE Code = ' + @Aux 

PRINT @lText 

Результат:

SELECT * FROM Table WHERE Code = @lCode 

Как я могу obtein значение @Aux Var, как это?

SELECT * FROM Table WHERE Code = 1234 

ответ

3
DECLARE @lCode INT 
DECLARE @lText NVARCHAR(400) 
DECLARE @lConditionName NVARCHAR(40) 
DECLARE @Aux NVARCHAR(400) 

SET @lCode = 1234; 
SET @lConditionName = N'Code' 

SET @Aux = N'@l' + @lConditionName 

SET @lText = N'SELECT * FROM Table WHERE Code = ' + @Aux 

PRINT @lText 

EXEC sp_executesql @lText, N'@lcode INT', @lcode 
+0

@lcode является Dinamic Name Var –

+0

@TomasCaffrey: в SQL Server, переменная может» t быть названным '1234' – Quassnoi

+0

Спасибо Квассоной. Я понимаю, но мне нужно значение var, имя которого находится в aux var. aux = 'lcode' ... Я надеюсь объяснить. –

0

Вы можете попробовать это:

DECLARE @lCode INT 
DECLARE @lText NVARCHAR(400) 
DECLARE @lConditionName NVARCHAR(40) 
DECLARE @Aux NVARCHAR(400) 

SET @lCode = 1234; 
SET @lConditionName = N'Code' 

SET @Aux = N'@l' + @lConditionName 

SET @lText = N'SELECT * FROM Table WHERE Code = ' + @Aux 

set @lText = N'Print ' + @Aux 
print @lText 
EXEC sp_executesql @lText, N'@lcode INT', @lcode 

Выход

Print @lCode 
1234