【问题标题】:Setting a parameter using dynamic SQL使用动态 SQL 设置参数
【发布时间】:2017-11-13 09:09:44
【问题描述】:

我一直在尝试使用动态 SQL 设置参数,但是每次我这样做时它总是返回一个 NULL。下面我复制了我的代码的基本版本,任何人都可以建议我将如何做我想做的事情。

DECLARE
@SQL_Prev_Values nvarchar(max),
@Value nchar(100),
@Prev_Values varchar(150) =' '

SET @Value = 'dave'

SET @SQL_Prev_Values = 'SET @Prev_Values = @Prev_Values + ''' + REPLACE(@Value,' ' ,'')+''''
SELECT @SQL_Prev_Values
EXEC sp_executesql @SQL_Prev_values,N'@Prev_Values nchar out',@Prev_Values out 
SELECT @Prev_Values
SET @Prev_Values = @Prev_Values + 'dave'
SELECT @Prev_Values 

我在网上看到了一些东西,但它们对我来说似乎没有意义。 任何帮助,将不胜感激。 提前致谢。

【问题讨论】:

    标签: sql sql-server tsql dynamic-sql


    【解决方案1】:

    从下面的屏幕截图中可以看出,模板运行良好:

    DECLARE @Prev_Values nchar;
    DECLARE @SQL_Prev_Values NVARCHAR(MAX);
    
    SET @SQL_Prev_Values = N'SET @Prev_Values = 1;'
    
    EXEC sp_executesql @SQL_Prev_values,N'@Prev_Values nchar out',@Prev_Values out
    
    SELECT @Prev_Values;
    


    试试这个:

    DECLARE
    @SQL_Prev_Values nvarchar(max),
    @Value nchar(100),
    @Prev_Values varchar(150) =' '
    
    SET @Value = 'dave'
    
    SET @SQL_Prev_Values = 'SET @Prev_Values =  @Prev_Values + ''' + REPLACE(@Value,' ' ,'')+''''
    SELECT @SQL_Prev_Values
    
    EXEC sp_executesql @SQL_Prev_values,N'@Prev_Values varchar(150) out',@Prev_Values out 
    SELECT @Prev_Values
    

    输出参数的值与sp_executesql中设置的不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-13
      • 2020-05-13
      • 1970-01-01
      • 1970-01-01
      • 2023-01-10
      • 2012-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多