1

DBCLOB を XML に変換/キャストする際に問題に直面しています。

バックグラウンド

タイプ DBCLOB (1073741823) の列にいくつかの xml データを格納しています。要件の 1 つとして、このデータをXML型に変換しXqueryて、結果をフィルタリングするために利用できるようにする必要があります。この変換を行うために、次の SQL クエリを使用して DBCLOB を XML データ型に変換しています。

SELECT XMLCAST (XMLPARSE (DOCUMENT (CAST (CAST (COLUMN1 AS DBCLOB(32672)) AS VARCHAR (32672)))) AS XML from TABLE1 

問題

一部のシナリオでは、DBCLOB 列のデータのサイズが 32672 を超えており、VARCHAR を介して DBCLOB を XML に変換しているため、出力が 32672 に制限され、XML 変換が失敗します。

このキャストを達成する方法は何ですか(xmlへのclob)

前もって感謝します

4

2 に答える 2

3

XMLPARSE関数は文字列式を期待していたので、実際にはvarcharにキャストしていました。

ドキュメントをもう一度読んだ後、それを blob に変換してから XML に変換しました。うまくいきました。参考までに、うまくいったサンプルクエリを以下に示します。

SELECT 
  XMLCAST (
    XMLPARSE (
      DOCUMENT CAST (
        COLUMN1 AS BLOB
      ) 
      PRESERVE WHITESPACE
    ) as XML
  ) 
FROM 
  TABLE1

ご支援ありがとうございます

于 2012-09-20T14:48:52.987 に答える
0

データベースで実行するキャストは、使用しているデータ型の制限によって制限されます (たとえば、例では varchar 32672 KB)。

代わりにXMLSERIALIZEを使用してみてください。

于 2012-07-05T13:20:22.203 に答える