200 DBMS_XMLQUERY
DBMS_XMLQUERY
は、データベースからXMLType
への変換機能を提供します。
できるだけDBMS_XMLQUERY
は使用せず、C
言語の組込みパッケージであるDBMS_XMLGEN
を使用してください。
この章のトピックは、次のとおりです:
200.1 DBMS_XMLQUERYのセキュリティ・モデル
DBMS_XMLQUERY
パッケージは、XDB
が所有しているため、SYS
またはXDB
によって作成される必要があります。EXECUTE
権限は、PUBLIC
に付与されます。
このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。
200.2 DBMS_XMLQUERYの定数
DBMS_XMLQUERY
パッケージには、パラメータ値の指定時に使用するいくつかの定数が含まれます。
次の表に、これらの定数の定義を示します。
表200-1 DBMS_XMLQUERYの定数
定数 | 説明 |
---|---|
|
DB文字エンコーディングの使用を示します。 |
|
結果セットから生成されたXMLを囲む要素のタグ名(ほとんどの場合、ルート・ノードのタグ名) -- |
|
発生したエラーを囲むデフォルトのタグ -- |
|
|
|
|
|
デフォルトの日付マスク -- |
|
出力にすべての行が必要であることを示します。 |
|
出力にXMLメタデータを含めない(DTDなどがない)ことを指定します。 |
|
DTDの生成が必要であることを指定します。 |
|
XML Schemaの生成が必要であることを指定します。 |
|
小文字のタグ名を使用します。 |
|
大文字のタグ名を使用します。 |
200.3 タイプ
DBMS_XMLQUERY
サブプログラムは、ctxType
タイプを使用します。
表200-2 DBMS_XMLQUERYのタイプ
タイプ | 説明 |
---|---|
|
問合せコンテキスト・ハンドルのタイプ。NEWCONTEXTの戻りタイプです。 |
200.4 DBMS_XMLQUERYサブプログラムの要約
この表は、DBMS_XMLQUERYサブプログラムを示し、簡単に説明しています。
表200-3 DBMS_XMLQUERYパッケージのサブプログラム
メソッド | 説明 |
---|---|
特定の問合せコンテキストのクローズまたは割当て解除を行います。 |
|
DTDを生成します。 |
|
スローされた例外のエラー・コードおよびエラー・メッセージを戻します。 |
|
問合せで処理された行の数を戻します。 |
|
使用中のXSUのバージョンを出力します。 |
|
XML文書を生成します。 |
|
問合せコンテキストを作成し、コンテキスト・ハンドルを戻します。 |
|
例外が発生してスローされる場合、 |
|
特定のトップレベルのスタイルシート・パラメータを削除します。 |
|
特定のバインド名の値を設定します。 |
|
コレクション要素のセパレータ・タグのID属性名を設定します。 |
|
XMLデータ・ヘッダーを設定します。 |
|
XML文書で生成された日付の書式を設定します。 |
|
XML文書でのエンコーディング処理命令を設定します。 |
|
XMLエラー・ドキュメントを囲むタグを設定します。 |
|
XMLに変換される行の最大数を設定します。 |
|
XMLメタ・ヘッダーを設定します。 |
|
発生した例外をスローするようにXSUに指示します。 |
|
生成されたXML文書がなんらかの理由で空である場合、 |
|
タグを囲む行のID属性名を設定します。 |
|
タグを囲む行のID属性に値を割り当てるスカラー列を指定します。 |
|
XMLデータセットを囲むタグを設定します。 |
|
XML要素を囲むタグを設定します。 |
|
スキップする行数を設定します。 |
|
XML識別子にマップされたSQLオブジェクト名が有効なXML識別子でない場合、XMLタグのエスケープをオンまたはオフにします。 |
|
スタイルシートのヘッダーを設定します。 |
|
生成されたXMLタグの大文字または小文字を指定します。 |
|
生成されたXMLに適用されるスタイルシートを登録します。 |
|
トップレベルのスタイルシート・パラメータの値を設定します。 |
|
|
|
コレクション要素のタグ名としてコレクション要素のタイプ名を使用することをXSUに指示します。 |
200.4.1 CLOSECONTEXT
このプロシージャは、特定の問合せコンテキストのクローズまたは割当て解除を行います。
構文
PROCEDURE CLOSECONTEXT( ctxHdl IN ctxType);
表200-4 CLOSECONTEXTプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
200.4.2 GETDTD
コンテキストの初期化に使用するSQL問合せに基づいてDTDを生成して戻します。指定できるオプションは、次の表のとおりです。
構文
コンテキストの初期化に使用するSQL問合せに基づいてDTDを生成するファンクション。
FUNCTION GETDTD(
ctxHdl IN ctxType,
withVer IN BOOLEAN := false)
RETURN CLOB;
コンテキストの初期化に使用するSQL問合せに基づいてDTDを生成するプロシージャ。XML文書の結果に対する出力CLOB
を指定します。
PROCEDURE GETDTD(
ctxHdl IN ctxType,
xDoc IN CLOB,
withVer IN BOOLEAN := false);
パラメータ
表200-5 GETDTDサブプログラムのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
バージョン情報を生成するかどうか。生成する場合は |
|
|
生成されたXML文書の書込み先 |
200.4.3 GETEXCEPTIONCONTENT
GETEXCEPTIONCONTENT
は、スローされた例外のSQLエラー・コードとエラー・メッセージを、プロシージャのOUT
パラメータを使用して戻します。
このプロシージャでは、元の例外を独自の例外で隠すというJVMの機能を実行し、その結果、PL/SQLは元の例外の内容にアクセスできなくなります。
構文
PROCEDURE GETEXCEPTIONCONTENT(
ctxHdl IN ctxType,
errNo OUT NUMBER,
errMsg OUT VARCHAR2);
パラメータ
表200-6 GETEXCEPTIONCONTENTプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
エラー番号。 |
|
|
エラー・メッセージ。 |
200.4.4 GETNUMROWSPROCESSED
問合せで処理された行の数を戻します。
構文
FUNCTION GETNUMROWSPROCESSED( ctxHdl IN ctxType) RETURN NUMBER;
表200-7 GETNUMROWSPROCESSEDファンクションのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
200.4.6 GETXML
GETXML
は、新規コンテキストを作成して問合せを実行し、XMLを戻してコンテキストをクローズします。これは便利なファンクションです。コンテキストは、明示的にオープンまたはクローズする必要はありません。
構文
このファンクションは、文字列形式のSQL問合せを使用します。
FUNCTION GETXML(
sqlQuery IN VARCHAR2,
metaType IN NUMBER := NONE)
RETURN CLOB;
このファンクションは、CLOB
形式のSQL問合せを使用します。
FUNCTION GETXML(
sqlQuery IN CLOB,
metaType IN NUMBER := NONE)
RETURN CLOB;
このファンクションは、コンテキストの初期化に使用するSQL問合せに基づいてXML文書を生成します。
FUNCTION GETXML(
ctxHdl IN ctxType,
metaType IN NUMBER := NONE)
RETURN CLOB;
このプロシージャは、コンテキストの初期化に使用するSQL問合せに基づいてXML文書を生成します。
PROCEDURE GETXML(
ctxHdl IN ctxType,
xDoc IN CLOB,
metaType IN NUMBER := NONE);
パラメータ
表200-8 GETXMLプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
XMLメタデータ・タイプ( |
|
|
SQL問合せ。 |
|
|
生成されたXML文書の書込み先 |
200.4.7 NEWCONTEXT
NEWCONTEXTは、保存コンテキストを作成し、コンテキスト・ハンドルを戻します。
構文
FUNCTION NEWCONTEXT(
sqlQuery IN VARCHAR2)
RETURN ctxType;
FUNCTION NEWCONTEXT(
sqlQuery IN CLOB)
RETURN ctxType;
パラメータ
表200-9 NEWCONTEXTファンクションのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
SQL問合せ。結果はXMLに変換する必要があります。 |
200.4.8 PROPAGATEORIGINALEXCEPTION
PROPAGATEORIGINALEXCEPTION
プロシージャは、発生した元の例外をすべてスローするか、OracleXMLSQLException
でラップするかを指定します。
構文
PROCEDURE PROPAGATEORIGINALEXCEPTION(
ctxHdl IN ctxType,
flag IN BOOLEAN);
パラメータ
表200-10 PROPAGATEORIGINALEXCEPTIONプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
元の例外を伝播するには |
200.4.9 REMOVEXSLTPARAM
このプロシージャは、トップレベルのスタイルシート・パラメータの値を削除します。登録されているスタイルシートがない場合、このメソッドは操作できません。
構文
PROCEDURE REMOVEXSLTPARAM( ctxHdl IN ctxType, name IN VARCHAR2);
表200-11 REMOVEXSLTPARAMプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
トップレベルのスタイルシート・パラメータの名前。 |
200.4.10 SETBINDVALUE
このプロシージャは、特定のバインド名の値を設定します。
構文
PROCEDURE SETBINDVALUE( ctxHdl IN ctxType, bindName IN VARCHAR2, bindValue IN VARCHAR2);
表200-12 SETBINDVALUEプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
バインド名。 |
|
|
バインド値。 |
200.4.11 SETCOLLIDATTRNAME
このプロシージャは、コレクション要素のセパレータ・タグのID属性名を設定します。
NULL
または空の文字列をタグに渡すと、行のID属性が省略されます。
構文
PROCEDURE SETCOLLIDATTRNAME( ctxHdl IN ctxType, attrName IN VARCHAR2);
表200-13 SETCOLLIDATTRNAMEプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
属性名。 |
200.4.12 SETDATAHEADER
このプロシージャは、XMLデータ・ヘッダーを設定します。
データ・ヘッダーとは、問合せにより生成されたXMLエンティティ(rowset
)の始めに追加されるXMLエンティティです。これら2つのエンティティをdocTag
引数で囲みます。最後に指定したデータ・ヘッダーが使用されます。header
パラメータにNULL
を渡すと、データ・ヘッダーの設定が解除されます。
構文
PROCEDURE SETDATAHEADER( ctxHdl IN ctxType, header IN CLOB := null, tag IN VARCHAR2 := null);
表200-14 SETDATAHEADERプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
ヘッダー。 |
|
|
データ・ヘッダーおよび行セットを囲むタグ。 |
200.4.13 SETDATEFORMAT
このプロシージャは、XML文書で生成された日付の書式を設定します。
日付書式パターン(日付マスク)の構文は、java.text.SimpleDateFormat
クラスの要件に従う必要があります。マスクをNULL
または空の文字列に設定すると、デフォルトのマスクであるDEFAULT_DATE_FORMAT
が設定されます。
構文
PROCEDURE SETDATEFORMAT( ctxHdl IN ctxType, mask IN VARCHAR2);
表200-15 SETDATEFORMATプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
日付マスク。 |
200.4.14 SETENCODINGTAGプロシージャ
このプロシージャは、XML文書でのエンコーディング処理命令を設定します。
構文
PROCEDURE SETENCODINGTAG( ctxHdl IN ctxType, enc IN VARCHAR2 := DB_ENCODING);
表200-16 SETENCODINGTAGプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
使用するエンコーディング。 |
200.4.15 SETERRORTAGプロシージャ
このプロシージャは、XMLエラー・ドキュメントを囲むタグを設定します。
構文
PROCEDURE SETERRORTAG( ctxHdl IN ctxType, tag IN VARCHAR2);
表200-17 SETERRORTAGプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
タグ名。 |
200.4.16 SETMAXROWSプロシージャ
このプロシージャは、XMLに変換される行の最大数を設定します。デフォルトでは、最大数は設定されていません。
構文
PROCEDURE SETMAXROWS ( ctxHdl IN ctxType, rows IN NUMBER);
表200-18 SETMAXROWSプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
生成する行の最大数。 |
200.4.17 SETMETAHEADERプロシージャ
このプロシージャは、XMLメタ・ヘッダーを設定します。
設定すると、このオブジェクトにより生成された各XML文書のメタデータ・パート(DTDまたはXMLSchema)の最初の部分にヘッダーが挿入されます。最後に指定したメタ・ヘッダーが使用されます。header
パラメータにNULL
を渡すと、メタ・ヘッダーの設定が解除されます。
構文
PROCEDURE SETMETAHEADER( ctxHdl IN ctxType, header IN CLOB := null);
表200-19 SETMETAHEADERプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
ヘッダー。 |
200.4.18 SETRAISEEXCEPTION
このプロシージャは、発生した例外をスローするかどうかを指定します。
このコールが行われない場合またはflag
引数にFALSE
が渡された場合は、XSUによってSQL例外が捕捉され、例外メッセージからXML文書が生成されます。
構文
PROCEDURE SETRAISEEXCEPTION( ctxHdl IN ctxType, flag IN BOOLEAN:=true);
表200-20 SETRAISEEXCEPTIONプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
発生した例外をスローするかどうか。する場合は |
200.4.19 SETRAISENOROWSEXCEPTION
このプロシージャは、生成されたXML文書が空だった場合にOracleXMLNoRowsException
をスローするかどうかを指定します。デフォルトでは、例外はスローされません。
構文
PROCEDURE SETRAISENOROWSEXCEPTION( ctxHdl IN ctxType, flag IN BOOLEAN:=false);
表200-21 SETRAISENOROWSEXCEPTIONプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
|
200.4.20 SETROWIDATTRNAME
このプロシージャは、タグを囲む行のID属性名を設定します。NULL
または空の文字列をタグに渡すと、行のID属性が省略されます。
構文
PROCEDURE SETROWIDATTRNAME( ctxHdl IN ctxType, attrName IN VARCHAR2);
表200-22 SETROWIDATTRNAMEプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
属性名。 |
200.4.21 SETROWIDATTRVALUE
このプロシージャは、タグを囲む行のID属性に値を割り当てるスカラー列を指定します。
colName
にNULL
または空の文字列を渡すと、行のID属性に行のカウント値(0、1、2など)が割り当てられます。
構文
PROCEDURE SETROWIDATTRVALUE( ctxHdl IN ctxType, colName IN VARCHAR2);
表200-23 SETROWIDATTRVALUEプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
値が行のID属性に割り当てられる列。 |
200.4.22 SETROWSETTAG
このプロシージャは、XMLデータセットを囲むタグを設定します。
構文
PROCEDURE SETROWSETTAG( ctxHdl IN ctxType, tag IN VARCHAR2);
表200-24 SETROWSETTAGプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
タグ名。 |
200.4.23 SETROWTAG
このプロシージャは、db.record
に対応するXML要素を囲むタグを設定します。
構文
PROCEDURE SETROWTAG( ctxHdl IN ctxType, tag IN VARCHAR2);
表200-25 SETROWTAGプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
タグ名。 |
200.4.24 SETSKIPROWS
SETSKIPROWS
は、スキップする行数を設定します。デフォルトでは、スキップされる行はありません。
構文
PROCEDURE SETSKIPROWS( ctxHdl IN ctxType, rows IN NUMBER);
表200-26 SETSKIPROWSプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
スキップする行の最大数。 |
200.4.25 SETSQLTOXMLNAMEESCAPING
このプロシージャは、XML識別子にマップされたSQLオブジェクト名が有効なXML識別子でない場合、XMLタグのエスケープをオンまたはオフにします。
構文
PROCEDURE SETSQLTOXMLNAMEESCAPING( ctxHdl IN ctxType, flag IN BOOLEAN := true);
表200-27 SETSQLTOXMLNAMEESCAPINGプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
エスケープをオンにするかどうか。する場合は |
200.4.26 SETSTYLESHEETHEADER
SETSTYLESHEETHEADER
は、生成されたXML文書のスタイルシートのヘッダー(スタイルシート処理命令)を設定します。
uri
引数にNULL
を渡すと、スタイルシート・ヘッダーおよびスタイルシート・タイプの設定が解除されます。
構文
PROCEDURE SETSTYLESHEETHEADER( ctxHdl IN ctxType, uri IN VARCHAR2, type IN VARCHAR2 := 'text/xsl');
表200-28 SETSTYLESHEETHEADERプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
スタイルシートのURI。 |
|
|
スタイルシート・タイプ。デフォルトは、 |
200.4.27 SETTAGCASE
SETTAGCASE
は、生成されたXMLタグの大文字または小文字を指定します。
構文
PROCEDURE SETTAGCASE( ctxHdl IN ctxType, tCase IN NUMBER);
表200-29 SETTAGCASEプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
タグに大文字と小文字のどちらを使用するか。
|
200.4.28 SETXSLT
SETXSLT
は、生成されたXMLに適用されるスタイルシートを登録します。スタイルシートがすでに登録されている場合は、新しいものに置換されます。uri
引数にNULL
を渡すか、stylesheet
引数にNULL
または空の文字列を渡すと、スタイルシート・ヘッダーおよびスタイルシート・タイプの設定が解除されます。
構文
スタイルシートを登録解除するには、URIにNULL
を渡します。
PROCEDURE SETXSLT(
ctxHdl IN ctxType,
uri IN VARCHAR2,
ref IN VARCHAR2 := null);
スタイルシートを登録解除するには、スタイルシートにNULL
または空の文字列を渡します。
PROCEDURE SETXSLT(
ctxHdl IN ctxType,
stylesheet CLOB,
ref IN VARCHAR2 := null);
パラメータ
表200-30 SETXSLTプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
スタイルシートのURI。 |
|
|
スタイルシート。 |
|
|
エンティティに含めたりインポートする他、外部エンティティのURL。 |
200.4.29 SETXSLTPARAM
SETXSLTPARAM
は、トップレベルのスタイルシート・パラメータの値を設定します。
パラメータ値には、有効なXPath式を指定します(このため、文字列リテラル値は明示的に引用されることが必要です)。登録されているスタイルシートがない場合、このメソッドは操作できません。
構文
PROCEDURE SETXSLTPARAM( ctxHdl IN ctxType, name IN VARCHAR2, value IN VARCHAR2);
表200-31 SETXSLTPARAMプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
トップレベルのスタイルシート・パラメータの名前。 |
|
|
スタイルシート・パラメータに割り当てられる値。 |
200.4.30 USENULLATTRIBUTEINDICATOR
このプロシージャは、NULL
であることを示すために、XML属性を使用するか、XML文書で特定のエンティティを省略するかどうかを指定します。
構文
PROCEDURE SETNULLATTRIBUTEINDICATOR( ctxHdl IN ctxType, flag IN BOOLEAN);
表200-32 USENULLATTRIBUTEINDICATORプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
|
200.4.31 USETYPEFORCOLLELEMTAG
このプロシージャは、コレクション要素のタイプ名をその要素のタグ名として使用するかどうかを指定します。
デフォルトでは、コレクション要素のタグ名は、コレクションのタグ名の後に_item
を付けた名前です。
構文
PROCEDURE USETYPEFORCOLLELEMTAG( ctxHdl IN ctxType, flag IN BOOLEAN := true);
表200-33 USETYPEFORCOLLELEMTAGプロシージャのパラメータ
パラメータ | IN / OUT | 説明 |
---|---|---|
|
|
コンテキスト・ハンドル。 |
|
|
タイプ名の使用をオンにするかどうか。 |