2009-11-06 86 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

您是否嘗試過在@SDName聲明中未引用@SD1

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