SQL不会打印出我的变量

时间:2013-07-05 06:45:27

标签: sql debugging stored-procedures sql-server-2012 dynamic-sql

我正在使用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);

这是输出消息:

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

any other message

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

修改

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

2 个答案:

答案 0 :(得分:6)

Add SET CONCAT_NULL_YIELDS_NULL OFF to the beginning of your process to allow the rest of the statement to print if there is a NULL value passed.

答案 1 :(得分:1)

解决了它。

事实证明,如果我添加一些null,结果将为null。因此,如果我添加'string to be printed'+NULL,则不会打印任何内容。现在我只需弄清楚为什么我的变量没有值^^祝我好运!