227 DBMS_XMLSTORE

DBMS_XMLSTOREは、リレーショナル表内にXMLデータを格納する機能を提供します。

ノート:

PL/SQLパッケージDBMS_XMLSTOREは、Oracle Database 23cで非推奨になりました。

DBMS_XMLSTOREは、Oracle DatabaseでXMLデータを格納および操作できる非標準のOracle独自のパッケージです。このパッケージは非推奨で、今後のリリースでサポートされなくなる可能性があります。Oracleでは、通常のSQL DMLを使用し、標準のXQueryおよびSQL/XMLを使用してXMLデータを格納および管理することをお薦めします。標準機能を使用すると、XMLデータを格納および操作するための将来的にも有効な方法が提供されます。

この章の構成は、次のとおりです。

227.1 DBMS_XMLSTOREのセキュリティ・モデル

DBMS_XMLSTOREパッケージは、XDBが所有しているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

227.2 タイプ

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

表227-1 DBMS_XMLSTOREのタイプ

タイプ 説明

ctxType

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

227.3 DBMS_XMLSTOREサブプログラムの要約

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

表227-2 DBMS_XMLSTOREパッケージのサブプログラム

メソッド 説明

CLEARKEYCOLUMNLIST

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

CLEARUPDATECOLUMNLIST

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

CLOSECONTEXT

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

DELETEXML

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

INSERTXML

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

NEWCONTEXT

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

SETKEYCOLUMN

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

SETROWTAG

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

SETUPDATECOLUMN

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

UPDATEXML

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

227.3.1 CLEARKEYCOLUMNLIST

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

構文

PROCEDURE clearKeyColumnList(
   ctxHdl IN ctxType);

表227-3 CLEARKEYCOLUMNLISTプロシージャのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

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

227.3.2 CLEARUPDATECOLUMNLIST

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

構文

PROCEDURE clearUpdateColumnList(
   ctxHdl IN ctxType);

表227-4 CLEARUPDATECOLUMNLISTプロシージャのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

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

227.3.3 CLOSECONTEXT

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

構文

PROCEDURE closeContext(ctxHdl IN ctxType);

表227-5 CLOSECONTEXTプロシージャのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

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

227.3.4 DELETEXML

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

構文

次の構文では、xDocパラメータにVARCHAR2タイプを使用しています。

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

次の構文では、xDocパラメータにCLOBタイプを使用しています。

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

次の構文では、xDocパラメータにXMLTypeタイプを使用しています。

FUNCTION deleteXML(
  ctxHdl IN ctxType,    
  xDoc IN XMLType)
RETURN NUMBER;

パラメータ

表227-6 DELETEXMLファンクションのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

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

xDoc

(IN)

XML文書を含む文字列。

227.3.5 INSERTXML

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

ユーザーが、追加要素(表のいずれの列にも一致しない要素)を含むDBMS_XMLSTOREinsertXMLのXMLファイルを渡した場合、OracleはSETUPDATECOLUMNが使用されていないかぎり、それらの列への挿入を試みることに注意してください。XMLファイル内の要素が表内の列と一致する場合にのみ、setUpdateColumnを使用できます。

構文

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

パラメータ

表227-7 INSERTXMLファンクションのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

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

xDoc

(IN)

XML文書を含む文字列。

227.3.6 NEWCONTEXT

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

構文

FUNCTION newContext(
   targetTable IN VARCHAR2)
RETURN ctxType;

表227-8 NEWCONTEXTファンクションのパラメータ

パラメータ IN / OUT 説明

targetTable

(IN)

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

227.3.7 SETKEYCOLUMN

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

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

構文

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

表227-9 SETKEYCOLUMNプロシージャのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

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

colName

(IN)

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

227.3.8 SETROWTAG

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

構文

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

表227-10 SETROWTAGプロシージャのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

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

tag

(IN)

タグ名。

227.3.9 SETUPDATECOLUMN

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

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

ユーザーが、追加要素(表のいずれの列にも一致しない要素)を含むDBMS_XMLSTOREINSERTXMLのXMLファイルを渡した場合、Oracleは、setUpdateColumnが使用されていないかぎり、それらの列への挿入を試みることに注意してください。XMLファイル内の要素が表内の列と一致する場合にのみ、setUpdateColumnを使用できます。

構文

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

表227-11 SETUPDATECOLUMNプロシージャのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

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

colName

(IN)

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

227.3.10 UPDATEXML

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

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

構文

次の構文では、xDocパラメータをVARCHAR2として渡しています。

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

次の構文では、xDocパラメータをCLOBとして渡しています。

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

次の構文では、xDocパラメータをXMLTypeとして渡しています。

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

パラメータ

表227-12 UPDATEXMLファンクションのパラメータ

パラメータ IN / OUT 説明

ctxHdl

(IN)

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

xDoc

(IN)

XML文書を含む文字列。