使用动态SQL设置参数

时间:2017-11-13 09:09:44

标签: sql sql-server tsql dynamic-sql

我一直在尝试使用动态SQL设置参数,但是每次执行此操作时都会返回NULL。下面我复制了我的代码的基本版本,任何人都可以建议我如何做我想做的事。

const logger = new winston.Logger({
  …,
  transports: [
    new winston.transports.Console({
      …,
      silent: process.argv.indexOf("--silent") >= 0,
    }),
  ],
});

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

1 个答案:

答案 0 :(得分:4)

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

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;

enter image description here

试试这个:

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中设置的值不同。