2017-01-11 6 views
1

を空にする理由(ええだけ1を;))動的SQL - 変数滞在は、私は動的SQLを使用した問題持って

ストアド・プロシージャ内で私はこのようなローカル変数宣言:

DECLARE @cmd nvarchar型(最大) をその後、私が持っているコードで入力の多いこの行は、(混乱して申し訳ありませんが、それを整理することに成功しませんでした)私のspは受け取ったパラメータ:私はそれをデバッグした後

SET @cmd = 'INSERT INTO dbo.' + @ArchiveTableName + '(' + @ArchiveFieldsName + ',' + @ArchiveEntityMainIdentifierField + ') 
    SELECT ' + @EntityFieldsName + ',' + '' + @EntityMainIdentifierField + '' + 
     ' FROM [' + @OrganizationName + '].[dbo].[' + @EntityName + '] ent 
     left join dbo.' + @ArchiveTableName + ' arc on arc.' + @ArchiveEntityMainIdentifierField + ' = ent.' + @EntityMainIdentifierField + ' 
     where ent.' + @EntityMainIdentifierField + ' = ''' + @ParentId + ''' and arc.' + @ArchiveEntityMainIdentifierField + ' is null' 

、私は奇妙な何かを発見しました。実行後、この@cmdは空のままです。

誰でも私にこれがどうして起こっているのかを知ることができますか?

+3

もし 'variable'が' NULL'ならば、文字列全体が 'NULL'になります –

+0

オハイオ州はそれを知っていませんでした。 –

+0

うん、それは、ありがとう! –

答えて

5

あなたの他の変数の1つはNULLです。 'Something' + NULL = NULLCONCAT(sql server 2012+)を使用すると、NULLが空の文字列になります。 COALESCE(SQL Server 2008+)も同様に使用してください(重要な変数がNULLでないことを確認してください)。

関連する問題