【问题标题】:Using a pointer to a local variable in Dynamic SQL在动态 SQL 中使用指向局部变量的指针
【发布时间】:2010-12-13 23:15:53
【问题描述】:

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

我怎样才能做到这一点?

【问题讨论】:

    标签: sql arrays dynamic variables local


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:
      DECLARE @SQLCmd varchar
      SET @SQLCmd  = 'SELECT MyNumber = ' + CAST(@SD1 AS VARCHAR)
      

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

      【讨论】:

        【解决方案3】:

        .

        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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-05-18
          • 1970-01-01
          • 2016-10-25
          • 1970-01-01
          • 2021-11-11
          • 2021-11-26
          相关资源
          最近更新 更多