0
コードでは、最初に追加する必要のある要素があり、残りのコードでは、tという名前の属性が作成または更新されます。複数の操作を同時に実行する
declare
LOG_REFERENCE xmltype:=xmltype('<log />');
begin
select XMLQuery('
copy $p := $p1 modify insert node <update data="{$p2}" />
as last into $p/log
return $p
' PASSING LOG_REFERENCE AS "p1", to_char(systimestamp) AS "p2" RETURNING CONTENT)
INTO LOG_REFERENCE from dual;
select XMLQuery('
copy $i := $p1 modify(
if (fn:exists($i/log[1]/@t)) then (
replace value of node $i/log[1]/@t with $p2
) else (
insert node attribute t {$p2} into $i/log[1]
)
)
return $i
' PASSING LOG_REFERENCE AS "p1", to_char(systimestamp) AS "p2" RETURNING CONTENT)
INTO LOG_REFERENCE from dual;
dbms_output.PUT_LINE(LOG_REFERENCE.getClobVal());
end;
私の問題は、私は2は、これは正しいですが、明らかに何かが欠けてイム私の頭の中でこの
declare
LOG_REFERENCE xmltype:=xmltype('<log />');
begin
select XMLQuery('
copy $p := $p1 modify(
insert node <update data="{$p2}" />
as last into $p/log
)
copy $i := $p modify(
if (fn:exists($i/log[1]/@t)) then (
replace value of node $i/log[1]/@t with $p2
) else (
insert node attribute t {$p2} into $i/log[1]
)
)
return $i
' PASSING LOG_REFERENCE AS "p1", to_char(systimestamp) AS "p2" RETURNING CONTENT)
INTO LOG_REFERENCE from dual;
dbms_output.PUT_LINE(LOG_REFERENCE.getClobVal());
end;
のようなもののXQuery呼び出しに変更に参加したかったということです。それともoracle xqueryで実行できないのですか?
与えられたエラーメッセージ:
ORA-19114:XPST0003 - エラーをXQuery式解析中:= $ P:7コピー$ I 'コピー' でのXQuery構文エラー: LPX-00801を変更( -^ORA-06512:EMあなたは、単一のmodify節で両方の操作を組み合わせることができます5