即使已声明,也必须声明标量变量错误

时间:2018-09-10 12:57:42

标签: sql sql-server-2012 dynamic-sql

我有一个已声明为nvarchar的变量,但是当我在代码中使用它并执行它时,我得到“必须声明标量变量@C”。

我已经这样做了,为什么我会收到错误消息?我的其他变量@T不会发生这种情况。

        DECLARE @T NVARCHAR(3) 
        SET @T = 'ABC'
        DECLARE @C NVARCHAR(2)
        SET @C = '26'
        DECLARE @SQL NVARCHAR(MAX)
        SET @SQL =
           'SELECT ' + @C + ' AS CLASS, 
            (SELECT COUNT(*) FROM T1_'+@T+') T1,
            (SELECT COUNT(*) FROM T2_'+@T+') T2,
            (SELECT COUNT(*) FROM T3_'+@T+') T3'
exec (@SQL)

我可以很容易地编写SELECT '26' AS Class(它可以工作),但最终我想将其包装在存储过程中,其中@C作为参数传递。

0 个答案:

没有答案