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使いの方々とも仲良くしたいじゃないですか♪