【问题标题】:get the value of variable name stored in SQL Sproc获取存储在 SQL Sproc 中的变量名的值
【发布时间】:2009-01-14 07:20:21
【问题描述】:

这就是我想做的事情

Declare @Var varchar(50) Declare @Num1 varchar(50) Declare @Num2 varchar(50) Declare @Counter smallint Set @Counter=1 Set @Num1='Hello' Set @Num2='Hi' while (@Counter<2) begin Set @Var=N'@Num'+convert(varchar,@Counter) //Now I want to get the value of '@Num1' that is stored in @Var when @Counter=1 //Help Needed Set @Counter=@Counter+1 end

【问题讨论】:

    标签: sql-server tsql stored-procedures


    【解决方案1】:

    这不是解决您的问题的一个非常优雅的解决方案,但至少它解决了它:)

     Declare @Var varchar(50)
     Declare @Num1 varchar(50)
     Declare @Num2 varchar(50)
     Declare @Counter smallint
     Declare @text varchar(50)
    
     Set @Counter=1
     Set @Num1='Hello'
     Set @Num2='Hi'
    
     while (@Counter<3)
     begin
     SET @text =
         CASE @Counter 
              WHEN 1 THEN @Num1
              WHEN 2 THEN @Num2
         END
     Set @Counter=@Counter+1
     print @text
     end
    

    【讨论】:

      【解决方案2】:

      AFAIK,你不能直接这样做;有什么问题,比如:

      SET @Var = SELECT CASE @Counter WHEN 1 THEN @Num1 ELSE @Num2 END
      

      如果您有很多值,请考虑使用#table(临时表)或@table(表变量) - 即

      DECLARE @Data TABLE ([Key] int NOT NULL, [Value] varchar(50))
      

      然后只需将INSERT/UPDATE 转换为@DATA

      SELECT @Var = [Value] FROM @Data WHERE [Key] = @Counter
      

      【讨论】:

        【解决方案3】:

        @Num1 的值将始终为“Hello”。 原因是您只是将一个字符串存储到@Var。

        【讨论】:

        • 大概真正的问题要复杂一点
        猜你喜欢
        • 2021-11-17
        • 2015-10-28
        • 1970-01-01
        • 2018-02-12
        • 1970-01-01
        • 2020-02-20
        • 1970-01-01
        • 2023-03-15
        • 1970-01-01
        相关资源
        最近更新 更多