SQL不会打印出我的变量

Joh*_*son 2 sql debugging stored-procedures dynamic-sql sql-server-2012

我正在使用SQL存储过程和动态SQL。当我尝试调试时,一切正常,直到打印出@columnName为止。

这是引起麻烦的代码部分:

DECLARE @query NVARCHAR(2000)
DECLARE @columnName NVARCHAR(250)
SELECT @query = 'SELECT myTable.value FROM myTable WHERE myConditions'
    EXECUTE sp_executesql @query, N'@columnName NVARCHAR(30) OUTPUT', @columnName OUTPUT
    PRINT N'query='+@query
    set @query = ''
    PRINT N'query after reset='+@query
    PRINT N'columnName='+@columnName
    PRINT N'any other message'
Select @query = 'SELECT myValues AS '''+@columnName+''',
                 FROM myTable2
                 WHERE myConditions';
EXEC(@query);
Run Code Online (Sandbox Code Playgroud)

这是输出消息:

query=SELECT myTable.value FROM myTable WHERE myConditions
query after reset=

any other message
Run Code Online (Sandbox Code Playgroud)

那么,我的columnName=输出在哪里?

编辑

SQL版本: Microsoft SQL Server 2012-11.0.2100.60(X64)2012年2月10日19:39:15版权所有(c)Windows NT 6.1(Build 7601:Service Pack 1)(Hypervisor)上的Microsoft Corporation标准版(64位)

小智 6

将SET CONCAT_NULL_YIELDS_NULL OFF添加到过程的开头,以允许在传递了NULL值的情况下打印语句的其余部分。