执行这段代码时,我返回NULL。你能帮我理解它有什么问题吗?它基本上用于使用动态sql语句计算表中的行。非常感谢提前。
DECLARE @sql nvarchar(4000),
@code nvarchar(40),
@count int,
@params nvarchar(4000)
SELECT @sql = N' SELECT @cnt = COUNT(*) FROM [Table1] WHERE [Column1]='''+quotename(@code)
SELECT @params = N'@code nvarchar(40), ' +
N'@cnt int OUTPUT'
EXEC sp_executesql @sql, @params, 'AD', @cnt = @count OUTPUT
SELECT @count as x
select @sql as y
如果您需要其他详细信息,请告诉我们。感谢指针/帮助。 PS。我已手动测试过,计数超过1。
答案 0 :(得分:2)
将参数(@code
)作为参数传递给sp_executesql
是一种很好的做法:
CREATE TABLE #Table1 (Column1 NVARCHAR(100));
INSERT INTO #Table1(Column1) VALUES ('AD'), ('AD');
DECLARE @sql NVARCHAR(MAX),
@code NVARCHAR(40),
@count INT,
@params NVARCHAR(4000);
SELECT @sql = N'SELECT @cnt = COUNT(*)
FROM #Table1
WHERE [Column1]= @code;'
,@params = N'@code NVARCHAR(40),
@cnt INT OUTPUT';
EXEC [dbo].[sp_executesql]
@sql
,@params
,@code = 'AD'
,@cnt = @count OUTPUT;
SELECT @count AS x;
的 LiveDemo
强>