1

一部の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;

上記のクエリは、最終的にうまくいきます。

4

1 に答える 1

1

Oracle データベース内の xmldataの基礎となるストレージは、CLOB または Binary です。

また、11g ではデフォルトでバイナリ ストレージになります。

ただし、ストレージに関係なく、xmltype 列に対するクエリでは一貫した結果が得られるはずです。

>>>> では、バイナリ XML のコンテンツを取得するにはどうすればよいでしょうか?

クエリを使用して xmltype 列のコンテンツを取得する方法は変わりません。

  • xmlquery(..) を選択
  • xmlcast(xmlquery(...)) を選択
  • 選択抽出()、抽出値()、...

これらは、xml 内のデータを抽出する方法の一部です。

お役に立てれば。

于 2012-05-30T11:47:38.833 に答える