将查询结果分配给变量始终为null sql

时间:2014-01-03 14:13:24

标签: sql count exec

我在sql编写了以下脚本,而@TotalTabs总是返回null?

DECLARE @TotalTabs NVARCHAR(30)
DECLARE @cmd NVARCHAR(MAX)
SET @cmd = ' Select count(*) from(select distinct COutputData_3_autosampler position, COutputData_3_Sequence_Number from '
    + @temp_table_afterpivot_SegRpt + ')'
EXEC sp_executesql @TotalTabs, N'@TotalTabs nvarchar out', @TotalTabs OUT  

SELECT  @TotalTabs

2 个答案:

答案 0 :(得分:2)

当您应该执行@cmd时,

看起来正在执行@TotalTabs作为SQL。实际上你的@cmd从未在任何地方使用过。

Select count(*) from (select distinct COutputData_3_autosampler, position, COutputData_3_Sequence_Number from '
+ @temp_table_afterpivot_SegRpt + ') AS TT'

您在位置后缺少逗号。我假设所有3列都在@temp_table_afterpivot_SeqRpt?

答案 1 :(得分:0)

感谢大家的帮助。我发现了这个问题,脚本需要一个别名。

声明@TotalTabs nvarchar(30) 声明@cmd nvarchar(max) set @cmd ='select count(*)from(select distinct [COutputData_3_AutoSampler Position],COutputData_3_Sequence_Number from' + @temp_table_afterpivot_SegRpt +')as tt' exec sp_executesql @cmd,N'@ TotalTabs nvarchar out',@ TotalTabs out

选择@TotalTabs作为TotalTabs