したがって、テーブルの単一の行/列に XML ファイル全体が格納されています。それを変数に割り当てて、WITH NAMESPACES を指定する必要があります。ただし、機能する構文を思い付くことはできません。
DECLARE @xmlText xml
set @xmlText = (select rowdata
FROM dbo.Staging with (nolock)
WHERE
FileId = @FileID AND
ClientID = @ClientID)
どういうわけか、実行のためにSQLステートメントを考案する必要がありますか? 私がそうするなら、それが別のspidにあるので、それをローカル変数に戻す方法がわかりません。私は困惑しています!
私はxqueryを使用します:)
これは構文チェックに合格しました...
;WITH XMLNAMESPACES('http://xxx' AS p)
(select @xmlText = rowdata
FROM dbo.Staging with (nolock)
WHERE
FileId = @FileID AND
ClientID = @ClientID)
SELECT
MFRRequestID = Y.i.value('(@id)[1]', 'int'),
RequestStatus = Y.i.value('Status[1]', 'varchar(10)') ,
AccountNumber = Y.i.value('p:AccountNumber[1]', 'varchar(10)'),
ReferralDate = CIF.value('(ReferralDate)[1]', 'datetime'),
SuspenseBalance = CIF.value('(SuspenseBalance)[1]', 'varchar(25)')
FROM @xmltext.nodes('/p:OrderRequest/p:RequestItems/p:MFRRequest')
AS Y(i) CROSS APPLY i.nodes('p:CaseInformation') AS Tbl(CIF)
しかし、私はエラーが発生しています...
XQuery [nodes()]: 名前「p」は名前空間を示しません。
これは私が昨日した質問に関連しています。私は基本的にこれを正確に機能させましたが、テーブルから @xmltext 変数を割り当てる代わりに (これは最終的な製品コードで行う必要があることです)、xml をコピーして貼り付け、ハードコードされた文字列として割り当てました。 xquery 構文を作成します。混乱して申し訳ありませんが、これは私にとってまったく新しいことです。