【问题标题】:Set EXECUTE sp_executesql result into a variable in sql将 EXECUTE sp_executesql 结果设置为 sql 中的变量
【发布时间】:2015-02-28 13:44:29
【问题描述】:

我必须将动态 sql 查询结果设置为变量。我的 sql 查询是:

DECLARE @ResultString NVARCHAR(MAX)
DECLARE @Qry NVARCHAR(MAX)  

SET @Qry='SELECT Test FROM MTest22Dec WHERE ID = 1'      
EXECUTE sp_executesql @Qry, N'@Result NVARCHAR(MAX) OUTPUT', @Result=@ResultString OUTPUT
PRINT @ResultString

但是@ResultString 打印的是空字符串,尽管数据库表中有记录。

这个查询有什么问题?

谢谢

【问题讨论】:

    标签: sql sql-server sql-server-2008 select


    【解决方案1】:

    试试这个:

    Declare @Query NVARCHAR(100)
    Declare @ResultString varchar(50)
    
    set @Query =N'select @ResultString=Test from dbo.MTest22Dec where id = @id'
    
    exec sp_executesql @Query, N'@id int,@ResultString varchar(20) output',
    @id = 1,@ResultString=@ResultString output
    
    print @ResultString
    

    【讨论】:

    • 我建议您在代码周围添加一些注释,并将代码格式化为代码。 (编辑器中有一个按钮将您的文本标记为答案中的代码)
    • 你这个代码会帮助你
    【解决方案2】:

    您需要将选择的结果分配给Dynamic statement内的variable

    像这样改变你的查询。

    DECLARE @Result NVARCHAR(MAX)
    DECLARE @Qry NVARCHAR(MAX)
    
    SET @Qry='SELECT @Result = Test FROM MTest22Dec WHERE ID = 1'
    
    EXECUTE Sp_executesql @Qry, N'@Result NVARCHAR(MAX) OUTPUT', @Result OUTPUT
    
    PRINT @Result 
    

    【讨论】:

      【解决方案3】:

      试试这个:

      DECLARE @ResultString NVARCHAR(MAX)
      DECLARE @Qry NVARCHAR(MAX)  
      
      SET @Qry='SELECT @ResultString = Test FROM MTest22Dec WHERE ID = 1'      
      EXECUTE sp_executesql @Qry, N'@ResultString NVARCHAR(MAX) OUTPUT', @ResultString OUTPUT
      PRINT @ResultString
      

      【讨论】:

        【解决方案4】:

        你必须在某处设置输出变量,例如。

        SET @Qry='SELECT @Result = Test FROM MTest22Dec WHERE ID = 1'
        

        【讨论】:

        • 因为@Qry 是一个NVARCHAR 变量,你应该真的使用N 前缀来明确这一点:SET @Qry = N'SELECT @Result = Test FROM MTest22Dec WHERE ID = 1'
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-27
        • 1970-01-01
        相关资源
        最近更新 更多