XML を CLOB パラメータとして返す PL/SQL プロシージャをいくつか作成したいと考えています。私はこれをやりたいだけです(単純なテストではうまくいきます):
create or replace procedure p_xml_test_1(
p_xml out nocopy clob
) is
begin
p_xml := '<?xml version="1.0" encoding="utf8" ?>' ||
'<test><something>some value</something></test>';
end p_xml_test_1;
しかし、基本的にこれを行う他のソースコードにアクセスできます。
create or replace procedure p_xml_test_2(
p_xml out nocopy clob
) is
lv_xml clob;
begin
dbms_lob.createtemporary(
lob_loc => p_xml,
cache => true
);
lv_xml := '<?xml version="1.0" encoding="utf8" ?>' ||
'<test><something>some value</something></test>';
dbms_lob.writeappend(
lob_loc => p_xml,
amount => length(lv_xml),
buffer => lv_xml
);
end p_xml_test_2;
最初の方法で問題が発生するかどうかは疑問です。そんなことしていいの?2 番目の方法の利点は何ですか? ありがとう!