日本語PDF

211 DBMS_XMLSAVE

DBMS_XMLSAVEは、XMLからデータベース・タイプへの変換の機能を提供します。

ノート:

Oracle Database 18.1リリースでは、DBMS_XMLSAVEパッケージの使用は推奨されていません。かわりにDBMS_XMLSTOREを使用してください。

DBMS_XMLSAVEパッケージは、より高度なテクノロジに置き換えられました。DBMS_XMLSAVEを使用して開発を開始しないことをお薦めしますが、下位互換性を維持する目的でこのパッケージを引き続きサポートしています。DBMS_XMLSAVEを使用している既存のアプリケーションは、引き続き機能します。

この章のトピックは、次のとおりです:

参照:

211.1 DBMS_XMLSAVEのセキュリティ・モデル

DBMS_XMLSAVEパッケージは、XDBが所有しているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、PUBLICに付与されます

このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

211.2 DBMS_XMLSAVEの定数

DBMS_XMLSAVEには、パラメータ値の指定時に使用する定数が含まれます。

次の表に、これらの定数の定義を示します。

表211-1 DBMS_XMLSAVEの定数

定数 説明

DEFAULT_ROWTAG

データベース・レコードに対応する要素のデフォルト・タグ名 -- ROW。

DEFAULT_DATE_FORMAT

デフォルトの日付マスク -- 'MM/dd/yyyy HH:mm:ss'。

MATCH_CASE

XML要素のデータベース・エンティティへのマップ時に、XSUは大/小文字区別が必要であることを指定します。

IGNORE_CASE

XML要素のデータベース・エンティティへのマップ時に、XSUは大/小文字区別が不要なことを指定します。

211.3 タイプ

DBMS_XMLSAVEサブプログラムは、ctxTypeタイプを使用します。

表211-2 DBMS_XMLSAVEのタイプ

タイプ 説明

ctxType

問合せコンテキスト・ハンドルのタイプ。問合せコンテキスト・ハンドルのタイプ。NEWCONTEXTの戻りタイプです。

211.4 DBMS_XMLSAVEサブプログラムの要約

この表は、DBMS_XMLSAVEサブプログラムを示し、簡単に説明しています。

表211-3 DBMS_XMLSAVEパッケージのサブプログラム

メソッド 説明

CLEARKEYCOLUMNLIST

キー列リストをクリアします。

CLEARUPDATECOLUMNLIST

更新列リストをクリアします。

CLOSECONTEXT

特定の保存コンテキストのクローズまたは割当て解除を行います。

DELETEXML

XML文書のデータで指定したレコードを、コンテキスト作成時に指定した表から削除します。

GETEXCEPTIONCONTENT

スローされた例外のエラー・コードおよびエラー・メッセージを戻します。

INSERTXML

コンテキストの作成時に指定した表にXML文書を挿入します。

NEWCONTEXT

保存コンテキストを作成し、コンテキスト・ハンドルを戻します。

PROPAGATEORIGINALEXCEPTION

例外が発生してスローされる場合、OracleXMLSQLExceptionで例外をラップするのではなく、発生した例外自体をスローするようにXSUに指示します。

REMOVEXSLTPARAM

トップレベルのスタイルシート・パラメータの値を削除します。

SETBATCHSIZE

DMLの操作中に使用されたバッチ・サイズを変更します。

SETCOMMITBATCH

コミットするバッチ・サイズを設定します。

SETDATEFORMAT

XML文書で生成された日付の書式を設定します。

SETIGNORECASE

XSUがXML要素をデータベースにマップします。

SETKEYCOLUMN

このメソッドは、キー列リストに列を追加します。

SETPRESERVEWHITESPACE

空白を保持するかどうかをXSUに指示します。

SETROWTAG

XML文書で使用されたタグに名前を付け、データベースに対応するXML要素を囲みます。

SETSQLTOXMLNAMEESCAPING

XML識別子にマップされたSQLオブジェクト名が有効なXML識別子でない場合、XMLタグのエスケープをオンまたはオフにします。

SETUPDATECOLUMN

更新列リストに列を追加します。

SETXSLT

保存するXMLに適用するXSL変換を登録します。

SETXSLTPARAM

トップレベルのスタイルシート・パラメータの値を設定します。

UPDATEXML

XML文書を指定して、表を更新します。

211.4.1 CLEARKEYCOLUMNLIST

このプロシージャは、キー列リストをクリアします。

構文

PROCEDURE clearKeyColumnList(
   ctxHdl IN ctxType);

パラメータ

表211-4 CLEARKEYCOLUMNLISTプロシージャのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

コンテキスト・ハンドル。

211.4.2 CLEARUPDATECOLUMNLIST

このプロシージャは、更新列リストをクリアします。

構文

PROCEDURE clearUpdateColumnList(
   ctxHdl IN ctxType);

パラメータ

表211-5 CLEARUPDATECOLUMNLISTプロシージャのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

コンテキスト・ハンドル。

211.4.3 CLOSECONTEXT

このプロシージャは、特定の保存コンテキストのクローズまたは割当て解除を行います。

構文

PROCEDURE closeContext(
   ctxHdl IN ctxType);

パラメータ

表211-6 CLOSECONTEXTプロシージャのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

コンテキスト・ハンドル。

211.4.4 DELETEXML

DELETEXMLファンクションは、XML文書のデータで指定したレコードを、コンテキスト作成時に指定した表から削除し、削除された行数を戻します。

構文

指定できるオプションは、次の表のとおりです。

FUNCTION deleteXML(
  ctxHdl IN ctxPType,
    xDoc IN VARCHAR2)
RETURN NUMBER;
FUNCTION deleteXML(
  ctxHdl IN ctxType,
  xDoc IN CLOB)
RETURN NUMBER;

パラメータ

表211-7 DELETEXMLファンクションのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

コンテキスト・ハンドル。

xDoc

(IN)

XML文書を含む文字列。

211.4.5 GETEXCEPTIONCONTENT

このメソッドは、引数を使用して、スローした例外のエラー・コードとエラー・メッセージ(SQLエラー・コード)を戻します。

これは、何の例外が発生した場合でも、実際にJVMから例外がスローされることがないように行われ、PL/SQLは元の例外にアクセスできなくなります。

構文

PROCEDURE getExceptionContent(
   ctxHdl IN ctxType,
   errNo OUT NUMBER,
   errMsg OUT VARCHAR2);

パラメータ

表211-8 GETEXCEPTIONCONTENTプロシージャのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

コンテキスト・ハンドル。

errNo

(IN)

エラー番号。

errMsg

(IN)

エラー・メッセージ。

211.4.6 INSERTXML

コンテキストの作成時に指定した表にXML文書を挿入し、挿入された行数を戻します。指定できるオプションは、次の表のとおりです。

構文

表211-9 INSERTXMLファンクションの構文

構文 説明
FUNCTION insertXML(
  ctxHdl IN ctxType,
  xDoc IN VARCHAR2)
RETURN NUMBER;

xDocパラメータをVARCHAR2として渡します。

FUNCTION insertXML(
  ctxHdl IN ctxType,
  xDoc IN CLOB)
RETURN NUMBER;

xDocパラメータをCLOBとして渡します。

パラメータ

表211-10 INSERTXMLファンクションのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

コンテキスト・ハンドル。

xDoc

(IN)

XML文書を含む文字列。

211.4.7 NEWCONTEXT

NEWCONTEXTは、保存コンテキストを作成し、コンテキスト・ハンドルを戻します。

構文

FUNCTION newContext(
   targetTable IN VARCHAR2)
RETURN ctxType;

パラメータ

表211-11 NEWCONTEXTファンクションのパラメータ

パラメータ IN / OUT 説明

targetTable

(IN)

XML文書のロード先となる表。

211.4.8 PROPAGATEORIGINALEXCEPTION

PROPAGATEORIGINALEXCEPTIONプロシージャは、例外が発生してスローされる場合、OracleXMLSQLExceptionで例外をラップするのではなく、発生した例外自体をスローするようにXSUに指示します。

構文

PROCEDURE propagateOriginalException(
   ctxHdl IN ctxType,
   flag IN BOOLEAN);

パラメータ

表211-12 PROPAGATEORIGINALEXCEPTIONプロシージャのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

コンテキスト・ハンドル。

flag

(IN)

元の例外を伝播するかどうか。0=FALSE、1=TRUEです。

211.4.9 REMOVEXSLTPARAM

このプロシージャは、トップレベルのスタイルシート・パラメータの値を削除します。

構文

PROCEDURE removeXSLTParam(
   ctxHdl IN ctxType, 
   name IN VARCHAR2);

パラメータ

表211-13 REMOVEXSLTPARAMプロシージャのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

コンテキスト・ハンドル。

name

(IN)

パラメータ名。

211.4.10 SETBATCHSIZE

このプロシージャは、DMLの操作中に使用されたバッチ・サイズを変更します。

挿入、更新または削除を実行する場合は、複数の操作をバッチ化することで、それぞれを別の文として実行しないで、1回ですべてを実行できます。ただし、すべてのバインド値をバッファに設定するために必要なメモリー量が増加します。バッチが使用されると、バッチが実行された後にのみコミットが発生することに注意してください。したがって、バッチ内の文のいずれかが失敗した場合は、バッチ全体がロールバックされます。このロールバックは、パフォーマンス向上には少し役立ちますが、回避する場合は、バッチ・サイズを1に設定してください。

構文

PROCEDURE setBatchSize(
   ctxHdl IN ctxType,
   batchSize IN NUMBER);

パラメータ

表211-14 SETBATCHSIZEプロシージャのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

コンテキスト・ハンドル。

batchSize

(IN)

バッチ・サイズ。

211.4.11 SETCOMMITBATCH

このプロシージャは、コミットするバッチ・サイズを設定します。

コミットするバッチ・サイズは、数値またはコミットの前に挿入されたレコードを参照します。batchSize1未満の場合、またはセッションが自動コミット・モードの場合、XSUを使用しても明示的なコミットは行われません。デフォルトでは、commitBatch0(ゼロ)です。

構文

PROCEDURE setCommitBatch(
   ctxHdl IN ctxType,
   batchSize IN NUMBER);

パラメータ

表211-15 SETCOMMITBATCHプロシージャのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

コンテキスト・ハンドル。

batchSize

(IN)

コミットするバッチ・サイズ。

211.4.12 SETDATEFORMAT

このプロシージャは、XML文書で生成された日付の書式を設定します。

日付書式パターン(日付マスク)の構文は、java.text.SimpleDateFormatクラスの要件に従う必要があります。マスクを<code>null</code>または空の文字列に設定すると、日付マスクの設定が解除されます。

構文

PROCEDURE setDateFormat(
   ctxHdl IN ctxType,
   mask IN VARCHAR2);

パラメータ

表211-16 SETDATEFORMATプロシージャのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

コンテキスト・ハンドル。

mask

(IN)

日付書式パターンの構文。

211.4.13 SETIGNORECASE

このファンクションは、XSUがXML要素をデータベースの列/属性にマップするときに、大/小文字を区別しないかどうかをXSUに指示します。このマッチングは、要素名(XMLタグ)に基づいて行われます。

構文

PROCEDURE setIgnoreCase(
   ctxHdl IN ctxType,
   flag IN NUMBER);

パラメータ

表211-17 SETIGNORECASEプロシージャのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

コンテキスト・ハンドル。

flag

(IN)

XML文書でタグの大/小文字を無視するかどうか。0=FALSE、1=TRUEです。

211.4.14 SETKEYCOLUMN

このメソッドは、「キー列リスト」に列を追加します。

列の値をNULLにはできません。更新または削除の場合、キー列リストの列が文のWHERE句を構成します。更新を実行するには、キー列リストを先に指定する必要がありますが、削除操作においては、これはオプションです。

構文

PROCEDURE setKeyColumn( 
   ctxHdl IN ctxType,
   colName IN VARCHAR2);

パラメータ

表211-18 SETKEYCOLUMNプロシージャのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

コンテキスト・ハンドル。

colName

(IN)

キー列リストに追加される列。NULLは設定できません。

211.4.15 SETPRESERVEWHITESPACE

このプロシージャは、空白を保持するかどうかをXSUに指示します。

構文

PROCEDURE setPreserveWhitespace(
   ctxHdl IN ctxType,
   flag IN BOOLEAN := true);

パラメータ

表211-19 SETPRESERVEWHITESPACEプロシージャのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

コンテキスト・ハンドル。

flag

(IN)

XSUが空白を保持する必要があるかどうか。

211.4.16 SETROWTAG

このプロシージャは、XML文書で使用されたタグに名前を付け、データベース・レコードに対応するXML要素を囲みます。

構文

PROCEDURE setRowTag(
   ctxHdl IN ctxType,
   tag IN VARCHAR2);

パラメータ

表211-20 SETROWTAGプロシージャのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

コンテキスト・ハンドル。

tag

(IN)

タグ名。

211.4.17 SETSQLTOXMLNAMEESCAPING

SETSQLTOXMLNAMEESCAPINGは、XML識別子にマップされたSQLオブジェクト名が有効なXML識別子でない場合、XMLタグのエスケープをオンまたはオフにします。

構文

PROCEDURE setSQLToXMLNameEscaping(
   ctxHdl IN ctxType,
   flag IN BOOLEAN := true);

パラメータ

表211-21 SETSQLTOXMLNAMEESCAPINGプロシージャのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

コンテキスト・ハンドル。

flag

(IN)

エスケープをオンにするかどうか。

211.4.18 SETUPDATECOLUMN

SETUPDATECOLUMNは、更新列リストに列を追加します。

挿入の場合、デフォルトでは、表内のすべての列に値を挿入します。更新の場合、デフォルトでは、XML文書のROW要素内に存在するタグに対応する列のみを更新します。更新列リストが指定されている場合、このリストに含まれる列のみが更新または挿入の対象となります。

構文

PROCEDURE setUpdateColumn( 
   ctxHdl IN ctxType,
   colName IN VARCHAR2);

パラメータ

表211-22 SETUPDATECOLUMNプロシージャのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

コンテキスト・ハンドル。

colName

(IN)

更新列リストに追加される列。

211.4.19 SETXSLT

SETXSLTは、保存するXMLに追加するXSL変換を登録します。

スタイルシートがすでに登録されている場合は、新しいものに置換されます。スタイルシートを登録解除するには、URIにNULLを渡します。指定できるオプションは、次の表のとおりです。

構文

表211-23 SETXSLTプロシージャの構文

構文 説明
PROCEDURE setXSLT(
  ctxHdl IN ctxType,
  uri IN VARCHAR2,
  ref IN VARCHAR2 := null);

URIを介してスタイルシートを渡します。

PROCEDURE setXSLT(
  ctxHdl IN ctxType,
  stylesheet IN CLOB,
  ref IN VARCHAR2 := null);

CLOBを介してスタイルシートを渡します。

パラメータ

表211-24 SETXSLTプロシージャのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

コンテキスト・ハンドル。

uri

(IN)

登録するスタイルシートのURI。

ref

(IN)

エンティティに含めたりインポートする他、外部エンティティのURL。

stylesheet

(IN)

登録するスタイルシートを含むCLOB

211.4.20 SETXSLTPARAM

SETXSLTPARAMは、トップレベルのスタイルシート・パラメータの値を設定します。

パラメータには、有効なXPath式を指定します(このため、リテラル値を明示的に引用する必要があります)。

構文

PROCEDURE setXSLTParam(
   ctxHdl IN ctxType,
   name IN VARCHAR2,
   value IN VARCHAR2);

パラメータ

表211-25 SETXSLTPARAMプロシージャのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

コンテキスト・ハンドル。

name

(IN)

パラメータ名。

value

(IN)

XPath式として指定するパラメータ値。

211.4.21 UPDATEXML

コンテキストの作成時に指定した表をXML文書のデータで更新し、更新された行数を戻します。

指定できるオプションは、次の表のとおりです。

構文

FUNCTION updateXML(
  ctxHdl IN ctxType,
  xDoc IN VARCHAR2)
RETURN NUMBER;
FUNCTION updateXML(
  ctxHdl IN ctxType,
  xDoc IN CLOB)
RETURN NUMBER;

パラメータ

表211-26 UPDATEXMLファンクションのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

コンテキスト・ハンドル。

xDoc

(IN)

XML文書を含む文字列。