T-SQL ストアド プロシージャで状況が発生しました。動的 SQL では、パラメーターが他の変数を参照し、その値には一重引用符と他の事前定義された演算子があります。問題は、そのような条件が存在する場合、T-SQL スクリプトが失敗することです。
このような状況を示すサンプル コードが添付されています。そのような場合を解決する方法はありますか?
DECLARE @TransVocObj XML,@xmlfragment XML,@SQL NVARCHAR(MAX)
SELECT @TransVocObj = '<TransactionVoucherViewModel><TransactionRows></TransactionRows></TransactionVoucherViewModel>'
DECLARE @Narration varchar(100)
SET @Narration ='AABBCC''DD''EEFF'-- @Narration ='AABBCCDDEEFF'
Select @xmlfragment=
'<TransactionRow>'+'<Description>'+@Narration +'</Description>'+'<DebitAmount>'+CONVERT(VARCHAR(30),500.00)+'</DebitAmount>'+'</TransactionRow>'
SET @SQL=N' SET @TransVocObj.modify(''insert '+ CONVERT(NVARCHAR(MAX),@xmlfragment)+' into (/TransactionVoucherViewModel/TransactionRows)[1] '') '
EXECUTE sp_executesql @SQL,N'@TransVocObj XML Output,@xmlfragment XML',@TransVocObj OUTPUT,@xmlfragment
SELECT T.Item.query('.//Description').value('.','VARCHAR(60)') FROM @TransVocObj.nodes('//TransactionRows/TransactionRow') AS T(Item)
データベース サーバーは MS SQL SERVER 2005 です。