ストアドプロシージャ内の各テンポラリテーブルのXMLを含む1つの行を含むテーブルを生成しようとしています。SQL Serverで空のときにテーブル構造のXMLを生成
テーブルが空の場合、FOR XML PATH('RS'), root('OR_RS')
はnull
を返します。私が欲しいもの
は次のとおりです。テーブルが空の場合、 何かのように、このテーブルの構造体を返す:
<OR_RS>
<ContactCode></ContactCode>
<EmailPaper></EmailPaper>
<ShortEmail></ShortEmail>
<WebSite></WebSite>
<Providers></Providers>
</OR_RS>
私はこれを行うことを試みた:
-- ,ISNULL((SELECT * FROM #OR_RS FOR XML PATH('RS'), root('OR_RS')), (SELECT ISNULL(ContactCode,'') , ISNULL(EmailPaper,'') , ISNULL(ShortEmail,'') , ISNULL(WebSite,'') , ISNULL(Providers,'') FROM #OR_RS FOR XML RAW)) as OR_RS
をそれが返されますいつもNull
:
SELECT 1 as Id, (SELECT * FROM #OR_MK FOR XML PATH('MK'), root('OR_MK')) as OR_MK
,(SELECT * FROM #OR_CA FOR XML PATH('CA'), root('OR_CA')) as OR_CA
-- ,ISNULL((SELECT * FROM #OR_RS FOR XML PATH('RS'), root('OR_RS')), (SELECT ISNULL(ContactCode,'') , ISNULL(EmailPaper,'') , ISNULL(ShortEmail,'') , ISNULL(WebSite,'') , ISNULL(Providers,'') FROM #OR_RS FOR XML AUTO)) as OR_RS
,(SELECT * FROM #OR_RS FOR XML PATH('RS'), root('OR_RS')) as OR_RS
,(SELECT * FROM #OR_DC FOR XML PATH('DC'), root('OR_DC')) as OR_DC
,(SELECT * FROM #BENEFICIARY FOR XML PATH('BEN'), root('BENEFICIARY')) as BENEFICIARY
,(SELECT * FROM #MK_REPORT for XML PATH('REP'), root('MK_REPORT')) as MK_REPORT