Oracle君で長いXMLをInsertするには
そうなんです。Oracle君の制限もあり、長いXML文書を用いてInsertを実行すると…
「文字リテラルが長すぎます」っていわれデータとして入れてくれません。
そこで登場するのが…プロシージャー♪
なにもあれですよ。DBに配置していなくても使用は可能ですよ(^・^)
(※あくまでもSQLPLUS上とかの話だけど…)
例えば…
hoge_xmlという名のXMLTableを作成しておきます。
insert into hoge_xml values xmltype('ここは長いXML文書')
で実効しても上記に記した結果で、はい残念。
だけども
DECLARE
xmldoc CLOB;
BEGIN
xmldoc := '長いXML文書';
insert into hoge_xml xmltype(xmldoc);
END;
とすればちゃんと長いXML文書がInsertされます。
もちろんCLOBとしての限度などはあるのでしょうけど…
ここらへんに似たようなものもアメリカのOTNの掲示板とか
「XMLDDB管理者ガイド」に目を通せばなんとなく判る事なのですが、
やっぱ目を通すだけじゃなかなか理解しがたいものがありますね…
だってストアドまで使ってるのだとストアド内でDOMやら使ってたりしますし。
話はそれますが…
DOMやSAXの概念自体は言語に依存したものでなく共通なので、
XML Proffesionalの試験を受ける為にも把握はしておきたいものです。
また、今さらながらFC2のスレッドテーマで「データベース」とひとくくりにされてるのに
疑問を抱いております。
言語に関してはPHPなど言語単体であるのにデータベースはひとくくりって…
SQLでひとくくりにはなるけど、データベースってくくりは大きすぎない?
じゃあスレッドテーマ作成しろよってなるんでしょうけど…
そこはほら、他のDB使いの方々とも仲良くしたいじゃないですか♪