2009-11-06 3 views
0

У меня возникают проблемы с динамическим SQL. В начале моего кода я назначаю данные кучу локальных переменных. Я хочу получить доступ к ним позже в своем коде и использовать значения данных. В приведенном ниже примере кода показан упрощенный пример, объясняющий, что я пытаюсь сделать.Использование указателя на локальную переменную в динамическом SQL

-- ---------------------------------------------- 
-- Declare and set the data into a local variable 
-- ---------------------------------------------- 
DECLARE @SD1 real 
SET @SD1 = 1.1 

-- ---------------------------------------------------------- 
-- Declare and set a variable to point to data local variable 
-- ---------------------------------------------------------- 
DECLARE @SDName varchar 
SET @SDName = '@SD1' 

-- --------------------------------------- 
-- Declare and set the dynamic SQL command 
-- ---------------------------------------- 
DECLARE @SQLCmd varchar 
SET @SQLCmd = 'SELECT MyNumber = ' + @SDName 

Выполнив этот код @SQLCmd содержит следующий ...

SELECT MyNumber = @SD1 

но что я действительно хочу, чтобы @SQLCmd содержать это ...

SELECT MyNumber = 1.1 

Как могу ли я это сделать?

ответ

1

Вы пробовали не указывать @SD1 в объявлении @SDName?

0
DECLARE @SQLCmd varchar 
SET @SQLCmd = 'SELECT MyNumber = ' + CAST(@SD1 AS VARCHAR) 

VARCHAR по умолчанию 30 символов Я считаю, что должно быть достаточно большим. Если вы хотите сделать это параметризованным запросом, вы можете выполнить его с помощью sp_executesql и передать значение параметра в.

0

.

DECLARE @SD1 real 
    SET @SD1 = 1.1 

DECLARE @SQLCmd nvarchar 
    SET @SQLCmd = 'SELECT MyNumber = CAST(@SDName AS varchar)' 

EXEC sp_executesql @SQLCmd, N'@SDName real', @SD1 
Смежные вопросы