一部のOracleデータベース表で XMLType 列を使用しています。以前 (11.2.0.2) では、考慮されるデフォルトのストレージ タイプは CLOB でした。したがって、XMLType 列に対してクエリを発行すると、列の内容が XML 文字列として表示されます。しかし、すべての表を削除して再作成し、いくつかのデータを挿入すると、XMLType 列の内容を取得できませんでした。単純に、XMLType を clumn 値に表示します。BINARY XMLでストレージタイプが変更されているかどうか疑問に思っていますか? したがって、次の変更ステートメントを発行します。
ALTER TABLE "MYSCHEMA"."SYSTEMPROP"
MODIFY ("XMLCOL")
XMLTYPE COLUMN "XMLCOL" STORE AS CLOB;
テーブルにはすでにいくつかのデータが存在することに注意してください。行を削除して挿入すると、コンテンツが XMLType として表示されます。SQL 開発者 UI ツールを使用しています。誰でもこの問題を解決する方法を提案できますか?
編集:
わかりました。ここで、XMLType 列の内容を SECURE FILE BINARY XML として格納することにしました。したがって、次のようなテーブルがあります。
CREATE TABLE XMYTYPETEST
(
ID NUMBER(8) NOT NULL,
VID NUMBER(4) NOT NULL,
UserName VARCHAR2(50),
DateModified TIMESTAMP(6),
Details XMLType
)XMLTYPE COLUMN Details STORE AS SECUREFILE BINARY XML;
Insert into XMYTYPETEST values(10001,1,'XXXX',sysdate,'<test><node1>BLOBTest</node1></test>');
Select * from XMYTYPETEST;
XMLType カラムは、SQL Developer で「SYS.XMLType」と表示されます。では、バイナリ XML のコンテンツを取得するにはどうすればよいでしょうか。
編集:
SELECT x.ID,x.Vid, x.details.getCLOBVal() FROM XMYTYPETESTx where x.ID=100000;
上記のクエリは、最終的にうまくいきます。