DBMS_XMLQUERY
は、データベースからXMLType
への変換機能を提供します。できるだけDBMS_XMLQUERY
は使用せず、C言語の組込みパッケージであるDBMS_XMLGEN
を使用してください。
関連項目: 『Oracle XML DB開発者ガイド』 |
この章では、次の項目について説明します。
セキュリティ・モデル
定数
タイプ
DBMS_XMLQUERY
パッケージは、XDB
が所有しているため、SYS
またはXDB
によって作成される必要があります。EXECUTE
権限は、PUBLIC
に付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。
表195-1 DBMS_XMLQUERYの定数
定数 | 説明 |
---|---|
|
DB文字エンコーディングの使用を示します。 |
|
結果セットから生成されたXMLを囲む要素のタグ名(ほとんどの場合、ルート・ノードのタグ名) -- |
|
発生したエラーを囲むデフォルトのタグ -- |
|
|
|
|
|
デフォルトの日付マスク -- |
|
出力にすべての行が必要であることを示します。 |
|
出力にXMLメタデータを含めない(DTDなどがない)ことを指定します。 |
|
DTDの生成が必要であることを指定します。 |
|
XML Schemaの生成が必要であることを指定します。 |
|
小文字のタグ名を使用します。 |
|
大文字のタグ名を使用します。 |
表195-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に指示します。 |
特定の問合せコンテキストのクローズまたは割当て解除を行います。
構文
PROCEDURE CLOSECONTEXT( ctxHdl IN ctxType);
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
コンテキストの初期化に使用するSQL問合せに基づいてDTDを生成して戻します。指定できるオプションは、次の表のとおりです。
構文 | 説明 |
---|---|
FUNCTION GETDTD(
|
コンテキストの初期化に使用するSQL問合せに基づいてDTDを生成するファンクション。 |
PROCEDURE GETDTD(
|
コンテキストの初期化に使用するSQL問合せに基づいてDTDを生成するプロシージャ。XML文書の結果に対する出力CLOB を指定します。 |
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
withVer |
(IN) |
バージョン情報を生成するかどうか。生成する場合はTRUE を設定します。
|
xDoc |
(IN) |
生成されたXML文書の書込み先CLOB 。 |
スローされた例外のSQLエラー・コードとエラー・メッセージを、プロシージャのOUT
パラメータを使用して戻します。このプロシージャでは、元の例外を独自の例外で隠すというJVMの機能を実行し、その結果、PL/SQLは元の例外の内容にアクセスできなくなります。
構文
PROCEDURE GETEXCEPTIONCONTENT( ctxHdl IN ctxType, errNo OUT NUMBER, errMsg OUT VARCHAR2);
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
errNo |
(OUT) |
エラー番号。 |
errMsg |
(OUT) |
エラー・メッセージ。 |
問合せで処理された行の数を戻します。
構文
FUNCTION GETNUMROWSPROCESSED( ctxHdl IN ctxType) RETURN NUMBER;
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
新規コンテキストを作成して問合せを実行し、XMLを戻してコンテキストをクローズします。これは便利なファンクションです。コンテキストは、明示的にオープンまたはクローズする必要はありません。指定できるオプションは、次の表のとおりです。
構文 | 説明 |
---|---|
FUNCTION GETXML(
|
このファンクションは、文字列形式のSQL問合せを使用します。 |
FUNCTION GETXML(
|
このファンクションは、CLOB 形式のSQL問合せを使用します。 |
FUNCTION GETXML(
|
このファンクションは、コンテキストの初期化に使用するSQL問合せに基づいてXML文書を生成します。 |
PROCEDURE GETXML(
|
このプロシージャは、コンテキストの初期化に使用するSQL問合せに基づいてXML文書を生成します。 |
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
metaType |
(IN) |
XMLメタデータ・タイプ(NONE 、DTD 、またはSCHEMA )。 |
sqlQuery |
(IN) |
SQL問合せ。 |
xDoc |
(IN) |
生成されたXML文書の書込み先CLOB 。 |
問合せコンテキストを作成し、コンテキスト・ハンドルを戻します。指定できるオプションは、次の表のとおりです。
構文 | 説明 |
---|---|
FUNCTION NEWCONTEXT(
|
文字列から問合せコンテキストを作成します。 |
FUNCTION NEWCONTEXT(
|
CLOB から問合せコンテキストを作成します。 |
パラメータ | IN / OUT | 説明 |
---|---|---|
sqlQuery |
(IN) |
SQL問合せ。結果はXMLに変換する必要があります。 |
発生した元の例外すべてをスローするか、OracleXMLSQLException
でラップするかどうかを指定します。
構文
PROCEDURE PROPAGATEORIGINALEXCEPTION( ctxHdl IN ctxType, flag IN BOOLEAN);
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
flag |
(IN) |
元の例外を伝播するにはTRUE 、OracleXMLException でラップするにはFALSE を設定します。 |
トップレベルのスタイルシート・パラメータの値を削除します。登録されているスタイルシートがない場合、このメソッドは操作できません。
構文
PROCEDURE REMOVEXSLTPARAM( ctxHdl IN ctxType, name IN VARCHAR2);
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
name |
(IN) |
トップレベルのスタイルシート・パラメータの名前。 |
特定のバインド名の値を設定します。
構文
PROCEDURE SETBINDVALUE( ctxHdl IN ctxType, bindName IN VARCHAR2, bindValue IN VARCHAR2);
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
bindName |
(IN) |
バインド名。 |
bindValue |
(IN) |
バインド値。 |
コレクション要素のセパレータ・タグのID属性名を設定します。NULL
または空の文字列をタグに渡すと、行のID属性が省略されます。
構文
PROCEDURE SETCOLLIDATTRNAME( ctxHdl IN ctxType, attrName IN VARCHAR2);
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
attrName |
(IN) |
属性名。 |
XMLデータ・ヘッダーを設定します。データ・ヘッダーとは、問合せにより生成されたXMLエンティティ(rowset
)の始めに追加されるXMLエンティティです。これら2つのエンティティをdocTag
引数で囲みます。最後に指定したデータ・ヘッダーが使用されます。header
パラメータにNULL
を渡すと、データ・ヘッダーの設定が解除されます。
構文
PROCEDURE SETDATAHEADER( ctxHdl IN ctxType, header IN CLOB := null, tag IN VARCHAR2 := null);
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
header |
(IN) |
ヘッダー。 |
tag |
(IN) |
データ・ヘッダーおよび行セットを囲むタグ。 |
XML文書で生成された日付の書式を設定します。日付書式パターン(日付マスク)の構文は、java.text.SimpleDateFormat
クラスの要件に従う必要があります。マスクをNULL
または空の文字列に設定すると、デフォルトのマスクであるDEFAULT_DATE_FORMAT
が設定されます。
構文
PROCEDURE SETDATEFORMAT( ctxHdl IN ctxType, mask IN VARCHAR2);
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
mask |
(IN) |
日付マスク。 |
XML文書でのエンコーディング処理命令を設定します。
構文
PROCEDURE SETENCODINGTAG( ctxHdl IN ctxType, enc IN VARCHAR2 := DB_ENCODING);
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
enc |
(IN) |
使用するエンコーディング。 |
XMLエラー・ドキュメントを囲むタグを設定します。
構文
PROCEDURE SETERRORTAG( ctxHdl IN ctxType, tag IN VARCHAR2);
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
tag |
(IN) |
タグ名。 |
XMLに変換される行の最大数を設定します。デフォルトでは、最大数は設定されていません。
構文
PROCEDURE SETMAXROWS ( ctxHdl IN ctxType, rows IN NUMBER);
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
rows |
(IN) |
生成する行の最大数。 |
XMLメタ・ヘッダーを設定します。設定すると、このオブジェクトにより生成された各XML文書のメタデータ・パート(DTDまたはXMLSchema)の最初の部分にヘッダーが挿入されます。最後に指定したメタ・ヘッダーが使用されます。header
パラメータにNULL
を渡すと、メタ・ヘッダーの設定が解除されます。
構文
PROCEDURE SETMETAHEADER( ctxHdl IN ctxType, header IN CLOB := null);
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
Header |
(IN) |
ヘッダー。 |
発生した例外をスローするかどうかを指定します。このコールが行われない場合またはflag
引数にFALSE
が渡された場合は、XSUによってSQL例外が捕捉され、例外メッセージからXML文書が生成されます。
構文
PROCEDURE SETRAISEEXCEPTION( ctxHdl IN ctxType, flag IN BOOLEAN:=true);
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
flag |
(IN) |
発生した例外をスローするかどうか。する場合はTRUE 、しない場合はFALSE を設定します。 |
生成されたXML文書が空だった場合にOracleXMLNoRowsException
をスローするかどうかを指定します。デフォルトでは、例外はスローされません。
構文
PROCEDURE SETRAISENOROWSEXCEPTION( ctxHdl IN ctxType, flag IN BOOLEAN:=false);
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
flag |
(IN) |
TRUE が設定された場合はOracleXMLNoRowsException をスローします。 |
タグを囲む行のID属性名を設定します。NULL
または空の文字列をタグに渡すと、行のID属性が省略されます。
構文
PROCEDURE SETROWIDATTRNAME( ctxHdl IN ctxType, attrName IN VARCHAR2);
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
attrName |
(IN) |
属性名。 |
タグを囲む行のID属性に値を割り当てるスカラー列を指定します。colName
にNULL
または空の文字列を渡すと、行のID属性に行のカウント値(0、1、2など)が割り当てられます。
構文
PROCEDURE SETROWIDATTRVALUE( ctxHdl IN ctxType, colName IN VARCHAR2);
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
colName |
(IN) |
値が行のID属性に割り当てられる列。 |
XMLデータセットを囲むタグを設定します。
構文
PROCEDURE SETROWSETTAG( ctxHdl IN ctxType, tag IN VARCHAR2);
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
tag |
(IN) |
タグ名。 |
db.record
に対応するXML要素を囲むタグを設定します。
構文
PROCEDURE SETROWTAG( ctxHdl IN ctxType, tag IN VARCHAR2);
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
tag |
(IN) |
タグ名。 |
スキップする行数を設定します。デフォルトでは、スキップされる行はありません。
構文
PROCEDURE SETSKIPROWS( ctxHdl IN ctxType, rows IN NUMBER);
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
rows |
(IN) |
スキップする行の最大数。 |
XML識別子にマップされたSQLオブジェクト名が有効なXML識別子でない場合、XMLタグのエスケープをオンまたはオフにします。
構文
PROCEDURE SETSQLTOXMLNAMEESCAPING( ctxHdl IN ctxType, flag IN BOOLEAN := true);
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
flag |
(IN) |
エスケープをオンにするかどうか。する場合はTRUE 、しない場合はFALSE を設定します。 |
生成されたXML文書のスタイルシートのヘッダー(スタイルシート処理命令)を設定します。uri
引数にNULL
を渡すと、スタイルシート・ヘッダーおよびスタイルシート・タイプの設定が解除されます。
構文
PROCEDURE SETSTYLESHEETHEADER( ctxHdl IN ctxType, uri IN VARCHAR2, type IN VARCHAR2 := 'text/xsl');
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
uri |
(IN) |
スタイルシートのURI。 |
type |
(IN) |
スタイルシート・タイプ。デフォルトは、text/xsl です。 |
生成されたXMLタグの大文字または小文字を指定します。
構文
PROCEDURE SETTAGCASE( ctxHdl IN ctxType, tCase IN NUMBER);
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
tCase |
(IN) |
タグに大文字と小文字のどちらを使用するか。
|
生成されたXMLに適用されるスタイルシートを登録します。スタイルシートがすでに登録されている場合は、新しいものに置換されます。指定できるオプションは、次の表のとおりです。uri
引数にNULL
を渡すか、stylesheet
引数に空の文字列を渡すと、スタイルシート・ヘッダーおよびスタイルシート・タイプの設定が解除されます。
構文 | 説明 |
---|---|
PROCEDURE SETXSLT(
|
スタイルシートを登録解除するには、URIにNULLを渡します。 |
PROCEDURE SETXSLT(
|
スタイルシートを登録解除するには、スタイルシートにNULLまたは空の文字列を渡します。 |
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
uri |
(IN) |
スタイルシートのURI。 |
stylesheet |
(IN) |
スタイルシート。 |
ref |
(IN) |
エンティティに含めたりインポートする他、外部エンティティのURL。 |
トップレベルのスタイルシート・パラメータの値を設定します。パラメータ値には、有効なXPath式を指定します(このため、文字列リテラル値は明示的に引用されることが必要です)。登録されているスタイルシートがない場合、このメソッドは操作できません。
構文
PROCEDURE SETXSLTPARAM( ctxHdl IN ctxType, name IN VARCHAR2, value IN VARCHAR2);
パラメータ | IN / OUT | 説明 |
---|---|---|
ctxHdl |
(IN) |
コンテキスト・ハンドル。 |
name |
(IN) |
トップレベルのスタイルシート・パラメータの名前。 |
value |
(IN) |
スタイルシート・パラメータに割り当てられる値。 |