2

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 Copyright (c) Microsoft Corporation Standard Edition (64-bit) o​​n Windows NT 6.1 (Build 7601: Service Pack 1) (ハイパーバイザー)

4

2 に答える 2

8

プロセスの先頭に SET CONCAT_NULL_YIELDS_NULL OFF を追加して、NULL 値が渡された場合に残りのステートメントを出力できるようにします。

于 2015-07-31T19:59:40.940 に答える
2

解決しました。

null で何かを追加すると、結果は null になります。したがって、追加する'string to be printed'+NULLと何も印刷されません。あとは、変数が値を持たない理由を突き止める必要があります ^^ 幸運を祈ります!

于 2013-07-05T08:28:04.147 に答える