0

我在使用动态 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

我怎样才能做到这一点?

4

3 回答 3

1

您是否尝试过不在@SD1声明中引用@SDName

于 2009-11-06T19:26:18.353 回答
0
DECLARE @SQLCmd varchar
SET @SQLCmd  = 'SELECT MyNumber = ' + CAST(@SD1 AS VARCHAR)

VARCHAR 默认为 30 个字符,我认为应该足够大。如果您想让它成为参数化查询,您可以使用 sp_executesql 执行它并传入参数值。

于 2009-11-06T19:33:16.593 回答
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
于 2009-11-06T19:35:10.640 回答