私はこれらの2つの類似したクエリを持っていますが、最初のケースでは問題なく動作しますが、2番目のケースでは失敗します
CREATE OR REPLACE FUNCTION XmlNodes(xmlData xml, selector TEXT) RETURNS TABLE(r xml)
AS $$ SELECT unnest(xpath(selector, xmlData)); $$ LANGUAGE SQL;
with tmp (x) AS(
SELECT r from
XmlNodes('<Data>
<RegDeletedItem Id="a60ded3d-2d2f-4f57-91d5-0091579bddb9" />
<RegDeletedItem Id="4295e41c-0a09-4601-984a-eac7a9e91fe1" />
</Data>', '/Data/RegDeletedItem')),
sel (y) AS (
select CAST(unnest(xpath('/RegDeletedItem/@Id', r.x))::varchar AS uuid) AS "DeletedItem_ForeignEntity" from tmp as r)
SELECT COALESCE(y, '00000000-0000-0000-0000-000000000000') AS "DeletedItem_ForeignEntity" from sel
そしてこれは失敗します
エラー:集合を受け入れることができないコンテキストで呼び出された集合値関数
SELECT coalesce((CAST(unnest(xpath('/RegDeletedItem/@Id', r))::varchar AS uuid)), '00000000-0000-0000-0000-000000000000') AS "DeletedItem_ForeignEntity" from
XmlNodes('<Data>
<RegDeletedItem Id="a60ded3d-2d2f-4f57-91d5-0091579bddb9" />
<RegDeletedItem Id="4295e41c-0a09-4601-984a-eac7a9e91fe1" />
</Data>', '/Data/RegDeletedItem') as r;
後者を機能させる方法はありますか?