OWA_UTIL
パッケージには、CGI環境変数値の取得、クライアントに戻されたデータの出力、HTML表の問合せ結果の出力などの操作を実行するユーティリティ・サブプログラムが含まれます。
関連項目: このパッケージの実装の詳細は、次のマニュアルを参照してください。
|
この章では、次の項目について説明します。
概要
タイプ
OWA_UTIL
パッケージには、3つのタイプのユーティリティ・サブプログラムが含まれます。
動的に生成したSQLコード付きのページが作成可能な動的SQL文ユーティリティ。
CGI環境変数の値の取得、およびURLのリダイレクトが実行可能なHTMLユーティリティ。
日付処理が訂正可能なデート・ユーティリティ。日付の値はHTMLの単純な文字列ですが、Oracle Databaseによってデータ・タイプとして処理されます。
TODATEファンクションはこのタイプの項目をDATE
タイプに変換します。これはデータベースでデータとして解釈され、適切に処理されます。CHOOSE_DATEプロシージャを使用すると、ユーザーは目的の日付を選択できます。
TYPE dateType IS TABLE OF VARCHAR2(10) INDEX BY BINARY_INTEGER;
このデータ・タイプは、配列に使用されます。
TYPE ident_arr IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;
このデータ・タイプは、OWA_SECパッケージのGET_CLIENT_IPファンクションによって使用されます。
TYPE ip_address IS TABLE OF INTEGER INDEX BY BINARY_INTEGER;
表219-1 OWA_UTILパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
|
SQL問合せを準備して、その問合せに変数をバインドします。 |
|
カレンダを印刷します。 |
|
HTML表の問合せのコンテンツを印刷します。 |
|
ユーザーが日付を選択できるHTMLフォーム要素を生成します。 |
|
指定したCGI環境変数の値を戻します。 |
|
PL/SQLゲートウェイの仮想フルパスを戻します。 |
|
PL/SQLゲートウェイによって起動されたプロシージャの名前を戻します。 |
|
HTTPヘッダーをクローズします。 |
|
問合せからのデータを含むHTMLフォーム要素を生成します。 |
|
HTTPヘッダーにContent-Type行を生成します。 |
|
すべてのCGI環境変数およびその値のリストを生成します。 |
|
HTTPヘッダーに場所の行を生成します。 |
|
SQL*PlusのHTPおよびHTFパッケージによって生成されたページを印刷します。 |
|
指定したサブプログラムのソースを印刷します。 |
|
PL/SQLエージェントによって生成されたページであることを示す行を印刷します。 |
|
HTTPヘッダーにステータスの行を生成します。 |
|
データベースの表から、データをHTML表として印刷します。 |
|
dateTypeデータを標準PL/SQL日付タイプに変換します。 |
|
プロシージャのコール元の情報を戻します。 |
このファンクションは、SQL問合せに変数をバインドしてSQL問合せを準備し、その出力をオープン・カーソルに格納します。このファンクションを、動的に生成された問合せを送信するプロシージャに対するパラメータとして使用します。25までのバインド変数を指定できます。
構文
OWA_UTIL.BIND_VARIABLES( theQuery IN VARCHAR2 DEFAULT NULL, bv1Name IN VARCHAR2 DEFAULT NULL, bv1Value IN VARCHAR2 DEFAULT NULL, bv2Name IN VARCHAR2 DEFAULT NULL, bv2Value IN VARCHAR2 DEFAULT NULL, bv3Name IN VARCHAR2 DEFAULT NULL, bv3Value IN VARCHAR2 DEFAULT NULL, ... bv25Name IN VARCHAR2 DEFAULT NULL, bv25Value IN VARCHAR2 DEFAULT NULL) RETURN INTEGER;
これらのプロシージャは、HTMLで境界線付きのカレンダを作成します。カレンダの各日付には、任意の数のハイパーテキスト・リンクを含むことができます。
このプロシージャには2つのバージョンがあります。
バージョン1は、VARCHAR2文字列に格納されているハード・コードされた問合せを使用します。
バージョン2は、BIND_VARIABLESファンクションで準備された動的問合せを使用します。
構文
OWA_UTIL.CALENDARPRINT( p_query IN VARCHAR2, p_mf_only IN VARCHAR2 DEFAULT 'N'); OWA_UTIL.CALENDARPRINT( p_cursor IN INTEGER, p_mf_only IN VARCHAR2 DEFAULT 'N');
このプロシージャは、SQL問合せの出力からHTML表を生成します。SQL基本データ単位はHTMLセルに、またSQL行はHTML行にマップされます。HTML表を開始および終了するためのコードを記述する必要があります。このプロシージャのバージョンは9つあります。
1つ目のバージョンは、問合せの結果を索引表に渡します。問合せを実行して、CELLSPRINTがフォーマットを実行します。SQL問合せの出力からのHTML表の生成について、より詳細に制御するには、HTFパッケージのFORMAT_CELLファンクションを使用します。
2つ目および3つ目のバージョンは、問合せまたはカーソルによって戻された行(指定された最大値まで)を表示します。
4つ目および5つ目のバージョンは、指定した行数をHTML表から排除します。4つ目および5つ目のバージョンを使用すると、非表示フォーム要素で見られる最後の行を保存することにより、結果セット内をスクロールできます。
6から9番目のバージョンは、行カウント出力パラメータを戻す点を除き、最初の4つのバージョンと同じです。
構文
OWA_UTIL.CELLSPRINT( p_colCnt IN INTEGER, p_resultTbl IN vc_arr,
p_format_numbers IN VARCHAR2 DEFAULT NULL);
OWA_UTIL.CELLSPRINT( p_theQuery IN VARCHAR2, p_max_rows IN NUMBER DEFAULT 100, p_format_numbers IN VARCHAR2 DEFAULT NULL); OWA_UTIL.CELLSPRINT( p_theCursor IN INTEGER, p_max_rows IN NUMBER DEFAULT 100, p_format_numbers iN VARCHAR2 DEFAULT NULL); OWA_UTIL.CELLSPRINT( p_theQuery IN VARCHAR2, p_max_rows IN NUMBER DEFAULT 100, p_format_numbers IN VARCHAR2 DEFAULT NULL, p_skip_rec IN NUMBER DEFAULT 0, p_more_data OUT BOOLEAN); OWA_UTIL.CELLSPRINT( p_theCursor IN INTEGER, p_max_rows IN NUMBER DEFAULT 100, p_format_numbers IN VARCHAR2 DEFAULT NULL, p_skip_rec IN NUMBER DEFAULT 0, p_more_data OUT BOOLEAN); OWA_UTIL.CELLSPRINT( p_theQuery IN VARCHAR2, p_max_rows IN NUMBER DEFAULT 100, p_format_numbers IN VARCHAR2 DEFAULT NULL, p_reccnt OUT NUMBER); OWA_UTIL.CELLSPRINT( p_theCursor IN INTEGER, p_max_rows IN NUMBER DEFAULT 100, p_format_numbers IN VARCHAR2 DEFAULT NULL, p_reccnt OUT NUMBER); OWA_UTIL.CELLSPRINT( p_theQuery IN VARCHAR2, p_max_rows IN NUMBER DEFAULT 100, p_format_numbers IN VARCHAR2 DEFAULT NULL, p_skip_rec IN NUMBER DEFAULT 0, p_more_data OUT BOOLEAN p_reccnt OUT NUMBER); OWA_UTIL.CELLSPRINT( p_theCursor IN INTEGER, p_max_rows IN NUMBER DEFAULT 100, p_format_numbers IN VARCHAR2 DEFAULT NULL, p_skip_rec IN NUMBER DEFAULT 0, p_more_data OUT BOOLEAN, p_reccnt OUT NUMBER);
パラメータ
表219-4 CELLSPRINTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
PL/SQL問合せ。 |
|
表内の列数。 |
|
SQL |
|
カーソルID。これは、BIND_VARIABLESファンクションからの戻り値である場合もあります。 |
|
印刷する行の最大数。 |
|
このパラメータの値が |
|
HTML表から排除する行数。 |
|
問合せまたはカーソル内にさらに多くの行がある場合は |
|
問合せによって戻された行数。この値には、スキップされた行(ある場合)は含まれません。 |
|
問合せの結果を含む索引表。問合せの各エントリは、1つの列の値に対応します。 |
このプロシージャは、ユーザーが年、月および日を選択できる3つのHTMLフォーム要素を生成します。
使用上の注意
これらの要素からデータを受け取るプロシージャのパラメータは、GET_CGI_ENVファンクションである必要があります。
TODATEファンクションを使用して、GET_CGI_ENVファンクション値を標準のOracle DATEデータ・タイプに変換します。
このプロシージャは、HTTPヘッダーをクローズする改行文字を生成します。
使用上の注意
MIME_HEADERプロシージャ
、REDIRECT_URLプロシージャ、STATUS_LINEプロシージャなどのコールでbclose_headerパラメータを使用してヘッダーをクローズしていない場合、このプロシージャを使用します。
HTP.PRINT
またはHTP.PRN
コールの前には、HTTPヘッダーをクローズする必要があります。
このプロシージャは、SQL問合せの出力からHTML選択リスト・フォーム要素を生成します。このプロシージャのバージョンは2つあります。
1つ目のバージョンには、ハードコードされたSQL問合せが含まれます。
2つ目のバージョンは、BIND_VARIABLESファンクションを使用して準備された動的問合せを使用します。
構文
OWA_UTIL.LISTPRINT( p_theQuery IN VARCHAR2, p_cname IN VARCHAR2, p_nsize IN NUMBER, p_multiple IN BOOLEAN DEFAULT FALSE); OWA_UTIL.LISTPRINT( p_theCursor IN INTEGER, p_cname IN VARCHAR2, p_nsize IN NUMBER, p_multiple IN BOOLEAN DEFAULT FALSE);
パラメータ
表219-7 LISTPRINTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
SQL問合せ。 |
|
カーソルID。これは、BIND_VARIABLESファンクションからの戻り値である場合もあります。 |
|
HTMLフォーム要素の名前。 |
|
フォーム要素のサイズ(ユーザーがスクロールせずに表示できる項目の数を制御します)。 |
|
複数の選択を許可するかどうかを指定します。 |
このプロシージャは、スクリプトが戻すデフォルトのMIMEヘッダーを変更します。このプロシージャは必ずHTP.PRINT
またはHTP.PRN
コールの前に実行して、デフォルトのMIMEヘッダーを使用しないようにスクリプトに指示する必要があります。
構文
OWA_UTIL.MIME_HEADER( ccontent_type IN VARCHAR2 DEFAULT 'text/html', bclose_header IN BOOLEAN DEFAULT TRUE, ccharset IN VARCHAR2 DEFAULT NULL);
パラメータ
表219-8 MIME_HEADERプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
生成するMIMEタイプ。 |
bclose_header |
HTTPヘッダーをクローズするかどうかを指定します。 |
ccharset |
使用するキャラクタ・セット。キャラクタ・セットは、MIMEタイプがTEXTタイプの場合にのみ有効です。このため、このキャラクタ・セットは、渡されたMIMEタイプがTEXTタイプの場合にのみ、Content-Typeヘッダーにのみタグ付けされます。他のMIMEタイプ('IMAGE'など)には、タグ付きのキャラクタ・セットがありません。 |
このプロシージャは、アプリケーション・サーバーが、指定したURLにアクセスするように指定します。URLには、戻る先のWebページか、実行するプログラムのいずれかを指定します。
このプロシージャは、SQL*PlusのプロシージャのHTML出力を印刷します。このプロシージャでは、HTMLページを生成するHTPまたはHTFパッケージを使用する必要があります。また、このプロシージャは、HTPまたはHTFページ生成サブプログラムがコールされた後、および他のHTPまたはHTFサブプログラムが直接的または間接的にコールされる前に発行する必要があります。
使用上の注意
このメソッドは、静的データが入力されたページの生成に便利です。
このプロシージャは、DBMS_OUTPUTパッケージを使用し、各行32767文字までに限定されます。全体のバッファ・サイズは1,000,000バイトです。
このプロシージャは、指定したプロシージャ、ファンクションまたはパッケージのソースを印刷します。パッケージに属するプロシージャまたはファンクションが指定されている場合、パッケージ全体が表示されます。
このプロシージャは、HTMLドキュメント上で、署名行が後に続くHTML行を生成します。パラメータが指定されていると、プロシージャは、そのパラメータのPL/SQLソースを表示するためのハイパーテキスト・リンクも生成します。このリンクはSHOWSOURCEプロシージャをコールします。
このプロシージャは、クライアントに標準のHTTPステータス・コードを送信します。このプロシージャはhtp.print
またはhtp.prn
コールの前に実行して、ステータス・コードがコンテンツ・データではなくヘッダーの一部として戻されるようにする必要があります。
構文
OWA_UTIL.STATUS_LINE( nstatus IN INTEGER, creason IN VARCHAR2 DEFAULT NULL, bclose_header IN BOOLEAN DEFAULT TRUE);
このファンクションは、データベース表から事前フォーマットされた表またはHTML表のいずれか(ユーザーのブラウザの機能に依存する)を生成します。
構文
OWA_UTIL.TABLEPRINT( ctable IN VARCHAR2, cattributes IN VARCHAR2 DEFAULT NULL, ntable_type IN INTEGER DEFAULT HTML_TABLE, ccolumns IN VARCHAR2 DEFAULT '*', cclauses IN VARCHAR2 DEFAULT NULL, ccol_aliases IN VARCHAR2 DEFAULT NULL, nrow_min IN NUMBER DEFAULT 0, nrow_max IN NUMBER DEFAULT NULL) RETURN BOOLEAN;
パラメータ
表219-13 TABLEPRINTファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
データベース表。 |
|
そのままの状態でタグに含まれるその他の属性。 |
|
表を生成する方法。
|
|
生成された表に含める、 |
|
データベース表から取り出す行を指定し、それらを並べる方法を指定する、 |
|
生成された表に対する、ヘッダーのカンマ区切りリスト。 |
|
取り出された行のうちの、表示する最初の行。 |
|
取り出された行のうちの、表示する最後の行。 |
使用上の注意
RAW
列はサポートされていますが、LONG
RAW
列はサポートされていません。LONG RAW列へ参照すると、「Not Printable」という結果が出力されます。
このファンクションでは、cattributes
は最後のパラメータではなく2番目のパラメータであることに注意してください。
例
HTML表をサポートしないブラウザでは、次のプロシージャを作成します。
CREATE OR REPLACE PROCEDURE showemps IS ignore_more BOOLEAN; BEGIN ignore_more := OWA_UTIL.TABLEPRINT('emp', 'BORDER', OWA_UTIL.PRE_TABLE); END;
次のようなURLを要求します。
http://myhost:7777/pls/hr/showemps
クライアントに次の結果が戻されます。
<PRE> ----------------------------------------------------------------- | EMPNO |ENAME |JOB |MGR |HIREDATE | SAL | COMM | DEPTNO | ----------------------------------------------------------------- | 7369| SMITH | CLERK | 7902 | 17-DEC-80 | 800 | | 20 | | 7499| ALLEN | SALESMAN| 7698 | 20-FEB-81 | 1600 | 300 | 30 | | 7521| WARD | SALESMAN| 7698 | 22-FEB-81 | 1250 | 500 | 30 | | 7566| JONES | MANAGER | 7839 | 02-APR-81 | 2975 | | 20 | | 7654| MARTIN | SALESMAN| 7698 | 28-SEP-81 | 1250 | 1400| 30 | | 7698| BLAKE | MANAGER | 7839 | 01-MAY-81 | 2850 | | 30 | | 7782| CLARK | MANAGER | 7839 | 09-JUN-81 | 2450 | | 10 | | 7788| SCOTT | ANALYST | 7566 | 09-DEC-82 | 3000 | | 20 | | 7839| KING | PRESIDENT | | 17-NOV-81 | 5000 | | 10 | | 7844| TURNER | SALESMAN| 7698 | 08-SEP-81 | 1500 | 0 | 30 | | 7876| ADAMS | CLERK | 7788 | 12-JAN-83 | 1100 | | 20 | | 7900| JAMES | CLERK | 7698 | 03-DEC-81 | 950 | | 30 | | 7902| FORD | ANALYST | 7566 | 03-DEC-81 | 3000 | | 20 | | 7934| MILLER | CLERK | 7782 | 23-JAN-82 | 1300 | | 10 | ------------------------------------------------------------------- </PRE>
部署10の従業員、およびそれらの従業員のID、名前、月給のみを表示するには、次のプロシージャを作成します。
CREATE OR REPLACE PROCEDURE showemps_10 IS ignore_more BOOLEAN; begin ignore_more := OWA_UTIL.TABLEPRINT ('EMP', 'BORDER', OWA_UTIL.PRE_TABLE, 'empno, ename, sal', 'WHERE deptno=10 ORDER BY empno', 'Employee Number, Name, Salary'); END;
次のようなURLを要求します。
http://myhost:7777/pls/hr/showemps_10
クライアントに次の結果が戻されます。
<PRE> ------------------------------------- | Employee Number |Name | Salary | ------------------------------------- | 7782 | CLARK | 2450 | | 7839 | KING | 5000 | | 7934 | MILLER | 1300 | ------------------------------------- </PRE>
HTML表をサポートするブラウザでHTML表内の部署表を表示するには、次のプロシージャを作成します。
CREATE OR REPLACE PROCEDURE showdept IS ignore_more BOOLEAN; BEGIN ignore_more := oWA_UTIL.TABLEPRINT('dept', 'BORDER'); END;
次のようなURLを要求します。
http://myhost:7777/pls/hr/showdept
クライアントに次の結果が戻されます。
<TABLE BORDER> <TR> <TH>DEPTNO</TH> <TH>DNAME</TH> <TH>LOC</TH> </TR> <TR> <TD ALIGN="LEFT">10</TD> <TD ALIGN="LEFT">ACCOUNTING</TD> <TD ALIGN="LEFT">NEW YORK</TD> </TR> <TR> <TD ALIGN="LEFT">20</TD> <TD ALIGN="LEFT">RESEARCH</TD> <TD ALIGN="LEFT">DALLAS</TD> </TR> <TR> <TD ALIGN="LEFT">30</TD> <TD ALIGN="LEFT">SALES</TD> <TD ALIGN="LEFT">CHICAGO</TD> </TR> <TR> <TD ALIGN="LEFT">40</TD> <TD ALIGN="LEFT">OPERATIONS</TD> <TD ALIGN="LEFT">BOSTON</TD> </TR> </TABLE>
Webブラウザはこれをフォーマットして、次の表のように表示します。
DEPTNO | DNAME | LOC |
---|---|---|
10 |
ACCOUNTING |
NEW YORK |
20 |
RESEARCH |
DALLAS |
30 |
SALES |
CHICAGO |
このプロシージャは、これを起動したPL/SQLコード・ユニットについての情報を(出力パラメータ形式で)戻します。
構文
OWA_UTIL.WHO_CALLED_ME( owner OUT VARCHAR2, name OUT VARCHAR2, lineno OUT NUMBER, caller_t OUT VARCHAR2);
パラメータ
表219-15 WHO_CALLED_MEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
プログラム・ユニットの所有者。 |
|
プログラム・ユニットの名前。コール元のプログラム・ユニットがパッケージにラップされている場合はパッケージの名前になり、コール元のプログラム・ユニットがスタンドアロンのプロシージャまたはファンクションの場合はプロシージャまたはファンクションの名前になります。コール元のプログラム・ユニットが無名ブロックの一部である場合は |
|
コールが実行されたプログラム・ユニット内の行番号。 |
|
コールが実行されたプログラム・ユニットのタイプ。可能なタイプは、パッケージ本体、無名ブロック、プロシージャおよびファンクションです。プロシージャおよびファンクションは、スタンドアロンのプロシージャおよびファンクションに対してのみです。 |