Comments
Transcript
Oracle9i Application Server mod_plsqlユーザーズ・ガイド
Oracle9i Application Server mod_plsql ユーザーズ・ガイド リリース 2(9.0.2) 2002 年 7 月 部品番号 : J05895-01 Oracle9i Application Server mod_plsql ユーザーズ・ガイド , リリース 2(9.0.2) 部品番号 : J05895-01 原本名:Oracle9i Application Server mod_plsql User's Guide, Release 2 (9.0.2) 原本部品番号:A90855-01 原本協力者:Ron Decker, Pushkar Kapasi, Sanjay Khanna, Eric Lee, Kannan Muthukkaruppan Copyright © 1996, 2002, Oracle Corporation. All rights reserved. Printed in Japan. 制限付権利の説明 プログラム(ソフトウェアおよびドキュメントを含む)の使用、複製または開示は、オラクル社との契 約に記された制約条件に従うものとします。著作権、特許権およびその他の知的財産権に関する法律に より保護されています。 当プログラムのリバース・エンジニアリング等は禁止されております。 このドキュメントの情報は、予告なしに変更されることがあります。オラクル社は本ドキュメントの無 謬性を保証しません。 * オラクル社とは、Oracle Corporation(米国オラクル)または日本オラクル株式会社(日本オラクル) を指します。 危険な用途への使用について オラクル社製品は、原子力、航空産業、大量輸送、医療あるいはその他の危険が伴うアプリケーション を用途として開発されておりません。オラクル社製品を上述のようなアプリケーションに使用すること についての安全確保は、顧客各位の責任と費用により行ってください。万一かかる用途での使用により クレームや損害が発生いたしましても、日本オラクル株式会社と開発元である Oracle Corporation(米 国オラクル)およびその関連会社は一切責任を負いかねます。当プログラムを米国国防総省の米国政府 機関に提供する際には、『Restricted Rights』と共に提供してください。この場合次の Notice が適用され ます。 Restricted Rights Notice Programs delivered subject to the DOD FAR Supplement are "commercial computer software" and use, duplication, and disclosure of the Programs, including documentation, shall be subject to the licensing restrictions set forth in the applicable Oracle license agreement. Otherwise, Programs delivered subject to the Federal Acquisition Regulations are "restricted computer software" and use, duplication, and disclosure of the Programs shall be subject to the restrictions in FAR 52.227-19, Commercial Computer Software - Restricted Rights (June, 1987). Oracle Corporation, 500 Oracle Parkway, Redwood City, CA 94065. このドキュメントに記載されているその他の会社名および製品名は、あくまでその製品および会社を識 別する目的にのみ使用されており、それぞれの所有者の商標または登録商標です。 目次 はじめに .......................................................................................................................................................................... iii 関連文書 ..................................................................................................................................................................... iv Oracle のサービスとサポート ................................................................................................................................. v 表記規則 ..................................................................................................................................................................... vi 1 mod_plsql の使用 Oracle データベース要件 ...................................................................................................................................... インストールの前に ............................................................................................................................................... 必須パッケージのインストール ........................................................................................................................... Oracle9i Application Server または WebDB リスナーからのアップグレード ..................................... 1-2 1-2 1-3 1-4 mod_plsql の設定ページへのアクセス .............................................................................................................. 1-5 OEM から DAD 設定ページへのアクセス ................................................................................................. 1-5 Portal から DAD 設定ページへのアクセス ................................................................................................ 1-6 2 mod_plsql の概要 クライアント・リクエストの処理 ....................................................................................................................... データベース・アクセス記述子(Database Access Descriptor: DAD) )...................................................... データベース・アクセス記述子( mod_plsql の実行 .................................................................................................................................................. POST 方式、GET 方式および HEAD 方式 ................................................................................................. 2-2 2-3 2-4 2-5 トランザクション・モード ................................................................................................................................... 2-6 i パラメータの受渡し ............................................................................................................................................... 2-6 名前によるパラメータの受渡し(パラメータのオーバーロード)......................................................... 2-7 オーバーロードと PL/SQL 配列 .......................................................................................................... 2-8 柔軟なパラメータの受渡し ........................................................................................................................... 2-8 2 パラメータ・インタフェース ............................................................................................................ 2-8 4 パラメータ・インタフェース ............................................................................................................ 2-9 大きなパラメータの受渡し ......................................................................................................................... 2-10 ファイルのアップロードとダウンロード ......................................................................................................... 2-11 ドキュメント表の定義 ................................................................................................................................. 2-11 CONTENT 列の意味 ............................................................................................................................ CONTENT_TYPE 列の意味 ................................................................................................................ LAST_UPDATED 列の意味 ................................................................................................................ DAD_CHARSET 列の意味 .................................................................................................................. 以前のスタイルのドキュメント表の定義 ................................................................................................. 2-12 2-12 2-12 2-12 2-13 ドキュメントのアップロード / ダウンロードのパラメータ ................................................................ 2-13 PlsqlDocumentTablename .................................................................................................................. PlsqlDocumentPath(ドキュメント・アクセス・パス)............................................................... PlsqlDocumentProcedure(ドキュメント・アクセス・プロシージャ)..................................... PlsqlUploadAsLongRaw ..................................................................................................................... ファイルのアップロード ............................................................................................................................. 2-13 2-13 2-14 2-14 2-15 アップロード・ファイルの属性(MIME タイプ)の指定 .................................................................... 2-17 複数のファイルのアップロード ................................................................................................................. 2-17 ファイルのダウンロード ............................................................................................................................. 2-18 BLOB のダイレクト・ダウンロード ......................................................................................................... 2-19 パスのエイリアシング(ダイレクト・アクセス URL) )................................................................................. Common Gateway Interface( (CGI)環境変数 )環境変数 .............................................................................................. CGI 環境変数の追加およびオーバーライド ............................................................................................ PlsqlNLSLanguage ....................................................................................................................................... 2-20 2-21 2-22 2-23 REQUEST_CHARSET CGI 環境変数 ................................................................................................ 2-23 REQUEST_IANA_CHARSET CGI 環境変数 ................................................................................... 2-23 mod_plsql での制限事項 .................................................................................................................................... 2-23 索引 ii はじめに このマニュアルでは、Oracle9i Application Server リリース 2(9.0.2)への mod_plsql のイ ンストール、設定およびメンテナンスの方法について説明します。次の章が含まれていま す。 第 1 章 - mod_plsql の使用方法について説明します。 第 2 章 - mod_plsql とその機能の概要を説明します。 iii 関連文書 詳細は、次のマニュアルを参照してください。 タイトル 部品番号 『Oracle9i Application Server Oracle HTTP Server 管理ガイド』 J05894-01 『Oracle9i Application Server セキュリティ・ガイド』 J05891-01 mod_plsql を使用した、データベー ス・アクセスの保護 『Oracle9i Application Server パフォーマンス・ガイド』 J05913-01 パフォーマンスとチューニングに関す る資料およびキャッシング 『Oracle9i Application Server 管理者ガイド』 J05890-01 Oracle Enterprise Manager コンソール (DAD 設定)を使用した Oracle9i Application Server の管理 『Oracle9i Application Server R1.0.2.2.x から R9.0.2 への移行 リリース 2(9.0.2) 』 J05911-01 変更されたパラメータ、および DAD への移行に使用するツール 『Oracle9i Application Server PL/SQL J05896-01 Web Toolkit リファレンス』 プラットフォーム固有の Oracle9i Application Server インストレーション・ガイド iv 内容 Oracle HTTP Server モジュールについ て。コマンドライン・ツールを使用し た管理と、手動による設定ファイル (DAD パラメータ、http.conf など)の 編集 OWA パッケージに関する情報 Oracle9i Application Server のインス トール 『Oracle9i Application Server Oracle Application Server からの 移行』 J05912-01 前のバージョンの Oracle Application Server からの移行 『Oracle9i Application Server 概要』 J05889-01 Oracle9i Application Server の概要 Oracle のサービスとサポート Oracle 製品およびグローバル・サービスに関する情報は、次の URL で入手できます。 ■ http://www.oracle.co.jp 次の各項に、各サービスに接続するための URL を記載します。 OTN-J( (Oracle Technology Network Japan) ) OTN-J(Oracle Technology Network Japan)へは、次の URL で登録することができます。 http://otn.oracle.co.jp/membership/ OTN-J では、テクニカル・ペーパー、ディスカッション・フォーラム、コード・サンプル、 製品マニュアル、セルフサービス開発者のサポート、および Oracle の開発者用の主要製品 を提供しています。これによって、Oracle テクノロジに基づいたアプリケーションの開発お よび配布を促進できます。 オラクル社カスタマ・サポート・センター テクニカル・サポートへの連絡先のリストは、次の URL で入手できます。 http://www.oracle.co.jp/support/ 問題点についての情報を事前に準備しておくためのテンプレートが用意されています。CSI 番号(ある場合)または詳細な連絡先情報が必要です。また、プロジェクト固有の情報があ ればそれも含めてください。 製品およびドキュメント 製品のマニュアルは、次の URL にあります。 ■ http://otn.oracle.co.jp/document/ 研修およびトレーニング 研修に関する情報と各国のスケジュールは、次の URL で入手できます。 ■ http://www.oracle.co.jp/education/ v 表記規則 このマニュアルでは、次の表記規則を使用しています。 表記規則 vi 意味 . . . コード例の中にある垂直の省略記号は、コード例に直接関係のない情報 が省略されていることを示します。 ... 構文またはコマンドの中にある水平の省略記号は、例に直接関係のない 構文またはコマンドの一部が省略されていることを示します。 太字 本文の中にある太字は、本文中に定義されている用語を示します。 <> 山カッコで囲まれている項目は、ユーザーが指定する名前を示します。 [] 大カッコで囲まれている項目は、オプション句を示します。選択肢の中 から 1 つ選択するか、または何も入力しなくてもかまいません。 1 mod_plsql の使用 mod_plsql の使用 1-1 Oracle データベース要件 Oracle データベース要件 mod_plsql を使用する Oracle データベースに推奨される最低条件を次に示します。 ■ Oracle8i 以上 注意 : Oracle 9.0.1.2 クライアント・ライブラリが、mod_plsql と同じ Oracle ホームにインストールされている必要があります。これらのライブ ラリがインストールされていると、mod_plsql をリモートの Oracle8i 以上 のデータベースに対して実行することが可能です。 ■ Oracle8i データベースでは、パス設定が正しいことを確認してください。 ■ Solaris の場合は、データベースに次のパッチ・セットが必要です。 ■ ■ Oracle8i リリース 8.1.6 データベースの場合は、8.1.6.3 以上 ■ Oracle8i リリース 8.1.7 データベースの場合は、8.1.7.2 以上 Windows NT の場合は、次のパッチ・セットが必要です。 ■ Oracle8i リリース 8.1.6 データベースの場合は、8.1.6.3.1 以上 ■ Oracle8i リリース 8.1.7 データベースの場合は、8.1.7.1.1 以上 インストールの前に Oracle9i Application Server の Oracle Universal Installer を使用して mod_plsql をインス トールする前に、次の前提条件を満たしている必要があります。 ■ mod_plsql で必要な PL/SQL Web Toolkit パッケージをロードするデータベースの SYS ユーザー・パスワードが必要です。 ■ mod_plsql を接続するデータベースが稼動している必要があります。 ■ Oracle Universal Installer を実行するマシンに十分なディスク領域が必要です。 ■ Oracle Universal Installer が oraInventory データを書き込むディレクトリの書込み許可 が必要です。 1-2 Oracle9i Application Server mod_plsql ユーザーズ・ガイド 必須パッケージのインストール 必須パッケージのインストール インストール後に、owaload.sql スクリプトを使用して、追加の必須パッケージを手動でイ ンストールします。 注意 : エクスポート・ユーティリティを使用して全データベースのエク スポートを実行した場合でも、OWALOAD.SQL スクリプトを SYS で実行 して、新規のターゲット・インスタンスに mod_plsql を再インストールす る必要があります。インポート / エクスポート・メカニズムでは、SYS 内 のオブジェクトはインポートされないため、PL/SQL ツールキットを SYS にインストールする必要があります。 1. owaload.sql ファイルが入っているディレクトリに移動します。このディレクトリは、 <ORACLE_HOME>/Apache/modpsql/owa です。 2. SQL*Plus を使用して、SYS ユーザーで Oracle データベースにログインします。 3. 別の OWA パッケージが SYS に存在する場合は、次の問合せを実行して、OWA パッ ケージの全インスタンスのリストを作成します。 select object_name, owner from all_objects where object_name like 'HTP%'; 他のスキーマで複数のインスタンスが検出された場合は、OWA パッケージをインス トールする前に、他のバージョンをアンインストールしてください。 4. SQL プロンプトで、次のコマンドを実行します。 @owaload.sql log_file 表 1-1 必須パッケージのインストール時のパラメータ エレメント 説明 owaload.sql PL/SQL Web Toolkit パッケージを SYS スキーマにインストール します。また、データベースの全ユーザーがアクセスできるよう、 パブリック・シノニムを作成してパッケージをパブリックにしま す。このため、1 つのデータベースにつき 1 回のインストールの み必要です。 log_file インストール・ログ・ファイルです。ログ・ファイルを作成する ための書込み許可があることを確認してください。 5. ログ・ファイルをスキャンして、エラーがないことを確認します。 mod_plsql の使用 1-3 必須パッケージのインストール 注意 : owaload スクリプトは、データベース内にある OWA パッケージ の既存のバージョンをチェックし、次の場合にのみ新しいバージョンをイ ンストールします。 ■ OWA パッケージが存在しない場合、または ■ 古いバージョンの OWA パッケージが検出された場合 データベースに最新の OWA パッケージが存在する場合、または新し いバージョンがインストールされている場合、owaload スクリプトは 何も処理を実行せず、その状況をログ・ファイルにレポートします。 6. 手動で再コンパイルします。 注意 : OWA パッケージをインストールすると、依存オブジェクトはす べて無効になります。このパッケージは最初のアクセス時に自動的に再コ ンパイルされますが、再インストール後に手動で再コンパイルすることを お薦めします。 7. インストール後、 「Select owa_util.get_version from dual」を実行して、OWA パッケー ジのバージョンをチェックします。表示されたバージョンが 9.0.2.1.0 以上であることを 確認してください。 Oracle9i Application Server または WebDB リスナーからのアップグレード Oracle9i Application Server または WebDB リスナー 2.5 以下をすでに実行している場合 は、次の処理を実行します。 1. そのスキーマに(PL/SQL Web Toolkit パッケージ以外の)ユーザー・データがな いことを確認します。 2. 以前の PL/SQL Web Toolkit パッケージがインストールされているそのスキーマを 削除します。 3. 1-3 ページの「必須パッケージのインストール」の説明に従って、新規の PL/SQL Web Toolkit をインストールします。 1-4 Oracle9i Application Server mod_plsql ユーザーズ・ガイド mod_plsql の設定ページへのアクセス mod_plsql の設定ページへのアクセス すべての監視および設定は、Oracle Enterprise Manager(OEM)ツールを使用して行いま す。mod_plsql の監視および設定には、HTTP サーバーの構成要素内のリンク、およびポー タルからアクセスできます。 注意 : mod_plsql および DAD 設定については、Oracle Enterprise Manager ツールのオンライン・ヘルプも参照してください。 mod_plsql の設定ページにアクセスするには、OEM から該当の Application Server に移動 します。ページには、ポータル・インスタンス、または HTTP サーバー・インスタンス内の リンクからアクセスできます。 OEM から DAD 設定ページへのアクセス 1. Web ブラウザで次の URL を入力します。 http://<hostname>:<port_number> 注意 : 2. デフォルトのポートは 1810 です。 Oracle9i Application Server の管理者のユーザー名とパスワードを入力します。管理者 ユーザーのデフォルトのユーザー名は、ias_admin です。デフォルトのパスワードは、 Oracle9iAS のインストール時に定義されます。 3. 「OK」 」をクリックします。 4. mod_plsql とともに設定が必要な Oracle9i Application Server のインスタンスを選択し ます。 5. HTTP サーバーのリンク、または Portal インスタンスを選択します。 6. PL/SQL properties または mod_plsql サービスを選択します。 7. 「DAD 状態」セクションにスクロールします。 状態」 8. 「作成」をクリックして新規の DAD を設定するか、またはアクセスする DAD の名前を 「作成」 クリックします。 mod_plsql の使用 1-5 mod_plsql の設定ページへのアクセス Portal から DAD 設定ページへのアクセス 1. Portal にログオンします。 2. 「ビルダー」アイコンをクリックします。 「ビルダー」 3. 「管理」タブにアクセスします。 「管理」 4. 「サービス」ポートレット内の「 「Portal サービスの監視」をクリックします。 サービスの監視」 5. 「Portal コンポーネント」セクションの「 「mod_plsql サービス」をクリックします。 サービス」 6. 「DAD 状態」セクションにスクロールします。 状態」 7. 「作成」をクリックして新規の DAD を設定するか、またはアクセスする DAD の名前を 「作成」 クリックします。 1-6 Oracle9i Application Server mod_plsql ユーザーズ・ガイド 2 mod_plsql の概要 Oracle9i Application Server は、Web アプリケーションの運用のためのオラクル社の中間層 製品群を 1 つのソリューションに統合します。mod_plsql は、Web 上での PL/SQL ベースの アプリケーションの構築をサポートします。PL/SQL ストアド・プロシージャは、データ ベースからデータを取得し、Web ブラウザで表示するデータとコードが含まれた HTTP レ スポンスを生成します。mod_plsql は、Oracle9iAS Portal など、他の Oracle 製品もサポート しています。 mod_plsql の概要 2-1 クライアント・リクエストの処理 クライアント・リクエストの処理 mod_plsql は、データベースと通信を行う Apache のプラグインです。これによって、ブラ ウザ・リクエストが、SQL*Net 接続を通じてデータベース・ストアド・プロシージャ・コー ルにマッピングされます。通常、仮想パスの /pls で示されます。 次に、サーバーがクライアント・リクエストを受信するときのステップの概要を説明しま す。 1. Oracle HTTP Server がクライアント・ブラウザから PL/SQL Server Page リクエストを 受信します。 2. Oracle HTTP Server は、そのリクエストを mod_plsql にルーティングします。 3. mod_plsql は、リクエストを Oracle データベースに転送します。mod_plsql は、DAD に格納された設定情報を使用して、データベースに接続します。 4. mod_plsql は、コール・パラメータを準備して、アプリケーション内の PL/SQL プロ シージャを実行します。 2-2 Oracle9i Application Server mod_plsql ユーザーズ・ガイド データベース・アクセス記述子(Database Access Descriptor: DAD) 5. PL/SQL プロシージャは、データベースからアクセスしたデータおよび PL/SQL Web Toolkit を使用して、HTML ページを生成します。 6. レスポンスが mod_plsql に返されます。 7. Oracle HTTP Server は、そのレスポンスをクライアント・ブラウザに送信します。 mod_plsql から実行されたプロシージャは、HTTP レスポンスをクライアントに返します。 この作業を簡単にするために、mod_plsql には PL/SQL Web Toolkit が含まれています。 PL/SQL Web Toolkit には、OWA パッケージと呼ばれるパッケージのセットが含まれてい ます。これらのパッケージをストアド・プロシージャ内で使用して、リクエスト情報の取得、 HTML タグの作成およびクライアントへのヘッダー情報の返信を行います。すべてのユー ザーがアクセスできるように、このツールキットは共通スキーマにインストールします。 データベース・アクセス記述子(Database Access Descriptor: データベース・アクセス記述子( DAD) ) 各 mod_plsql リクエストは、データベース・アクセス記述子(DAD)に関連付けられてい ます。DAD は、データベース・アクセスに使用される設定値のセットです。DAD により、 次のような情報が指定されます。 ■ データベース別名(Net8 サービス名) ■ データベースがリモートの場合、その接続文字列 ■ ドキュメントのアップロードおよびダウンロード用のプロシージャ また、DAD にはユーザー名とパスワードの情報を指定できます。指定がない場合には、 URL の実行時にユーザー名とパスワードを入力するプロンプトが表示されます。 mod_plsql の概要 2-3 mod_plsql の実行 mod_plsql の実行 mod_plsql を Web ブラウザで実行するには、次の形式で URL を入力します。 protocol://hostname[:port]/DAD location/[[!][schema.][package.]proc_name[?query_ string]] 表 2-1 mod_plsql 実行時のパラメータ パラメータ 説明 protocol http または https のいずれかを使用できます。SSL の場合は、 https を使用します。 hostname Web サーバーが稼動しているマシンです。 port アプリケーション・サーバーがリスニングしているポートです。 指定しない場合、ポート 80 が使用されます。 (オプション) DAD location Web サーバーで設定した PL/SQL リクエストを処理するための仮 想パスです。 ! 記号 柔軟なパラメータの受渡しスキームを使用することを示します。 詳細は、2-8 ページの「柔軟なパラメータの受渡し」を参照してく ださい。 (オプション) schema (オプション) package (オプション) データベース・スキーマ名です。指定しない場合、package.proc_ name の名前解決は、URL リクエストを処理したデータベース・ ユーザーに基づいて行われます。 PL/SQL ストアド・プロシージャを含んだパッケージです。指定 しない場合、プロシージャはスタンドアロンになります。 proc_name 実行する PL/SQL ストアド・プロシージャです。ファンクション ではなく、プロシージャを指定する必要があります。IN 引数のみ 使用可能です。 ?query_string ストアド・プロシージャのパラメータです。この文字列は、GET 方式の書式に従います。たとえば、次のようになります。 (オプション) ■ ■ ■ 複数のパラメータはアンパーサント(&)で区切ります。渡さ れる値内の空白文字はプラス(+)に置き換えられます。 HTML フォームを使用して文字列を生成する場合(文字列を 自分で生成するのではなく) 、書式化は自動的に行われます。 HTTP リクエストが HTTP の POST 方式を使用してデータを mod_plsql に送信する場合もあります。詳細は、2-5 ページの 「POST 方式、GET 方式および HEAD 方式」を参照してくだ さい。 2-4 Oracle9i Application Server mod_plsql ユーザーズ・ガイド mod_plsql の実行 例 1: DAD location として pls/mydad が Web サーバーに設定されており、ブラウザが次の URL を送信したとします。 http://www.acme.com:9000/pls/mydad/mypackage.myproc この場合、www.acme.com で稼動し、ポート 9000 でリスニングしている Web サーバーが リクエストを処理します。Web サーバーは、リクエストを受信すると、そのリクエストを mod_plsql に渡します。 これは、その Web サーバーが mod_plsql を実行するように設定されていることが、 pls/mydad により示されるためです。次に、mod_plsql は、mydad に関連付けられている DAD を使用して、mypackage に格納されている myproc プロシージャを実行します。 例 2: URL を、DAD、スキーマまたはストアド・プロシージャ名を含めずに指定したとしま す。 http://www.acme.com:9000/pls/mydad この場合、mydad という DAD のデフォルトのホーム・ページ(DAD の設定ページで指定 されている)が表示されます。 POST 方式、GET 方式および HEAD 方式 方式、 HTTP プロトコルの POST 方式、GET 方式および HEAD 方式は、パラメータ・データをア プリケーションに渡す方法(通常は名前 / 値ペア形式)をブラウザに対して指示します。パ ラメータ・データは HTML フォームによって生成されます。 mod_plsql アプリケーションでは、いずれの方式も使用できます。各方式のセキュアは、使 用する転送プロトコル(http または https)によって決定されます。 ■ ■ ■ ■ POST 方式を使用する場合、パラメータは Request Body 内で渡されます。大量のパラ メータ・データをサーバーに渡す場合は、通常、POST 方式を使用します。 GET 方式を使用する場合、パラメータは問合せ文字列を使用して渡されます。この方式 には、使用するオペレーティング・システムにより、名前 / 値ペアの値の長さが環境変 数の値の最大長を超えることができないという制限があります。さらに、オペレーティ ング・システムにより、定義できる環境変数の数も制限されます。 HEAD 方式を使用する場合、GET 方式と同じ機能を使用できます。唯一の違いは、 HTTP ステータス行および HTTP ヘッダーのみが返されることです。コンテンツ・デー タは、ブラウザに返信されません。この方式は、リクエストが正しく処理されているか どうかの確認のみを行う監視ツールで有効です。 複合モードでの使用 - mod_plsql では、一部のパラメータを問合せ文字列で渡し、それ 以外のパラメータを POST データとして渡すことができます。たとえば、 procedure foo (a varchar2, b number) で、値 v と 1 をそれぞれ a と b に渡す場合は、次 の 3 つの方法で値を渡して URL を作成できます。 ■ すべての値を問合せ文字列の一部として指定します。 http://host:port/pls/DAD/foo?a=v&b=1 mod_plsql の概要 2-5 トランザクション・モード ■ ■ すべての値を POST データの一部として指定します。 http://host:port/pls/DAD/foo, POST data="a=v&b=1" 一部のパラメータは URL で指定し、それ以外のパラメータは POST データで指定し ます。 http://host:port/pls/DAD/foo?a=v, POST data="b=1" トランザクション・モード プロシージャを実行するために URL リクエストを処理した後、エラーがあれば、mod_plsql によりロールバックが実行されます。そうでない場合は、コミットが実行されます。このメ カニズムでは、トランザクションが複数の HTTP リクエストにまたがることはできません。 この状態を保持しないモデルの場合、アプリケーションは、通常 HTTP Cookie またはデー タベース表を使用して状態を維持します。 パラメータの受渡し mod_plsql は、次の処理をサポートしています。 ■ 名前によるパラメータの受渡し プロシージャまたはファンクションを起動する URL 内の各パラメータは、一意の名前 により識別されます。パラメータのオーバーロードがサポートされています。詳細は、 2-7 ページの「名前によるパラメータの受渡し(パラメータのオーバーロード) 」を参照 してください。 ■ 柔軟なパラメータの受渡し プロシージャの先頭に感嘆符(!)が付加されます。詳細は、2-8 ページの「柔軟なパラ メータの受渡し」を参照してください。 ■ 大きなパラメータ(最大 32KB)の受渡し 詳細は、2-10 ページの「大きなパラメータの受渡し」を参照してください。 2-6 Oracle9i Application Server mod_plsql ユーザーズ・ガイド パラメータの受渡し 名前によるパラメータの受渡し(パラメータのオーバーロード) オーバーロードにより、名前が同じでパラメータの数、順序またはデータ型のファミリが異 なる複数のサブプログラム(プロシージャまたはファンクション)を使用できます。オー バーロードされたサブプログラムをコールすると、PL/SQL コンパイラは渡されたデータ型 に基づいて、どのサブプログラムをコールするかを決定します。 PL/SQL では、ローカル・サブプログラムとパッケージ・サブプログラムをオーバーロード できます。スタンドアロン・サブプログラムはオーバーロードできません。PL/SQL のオー バーロードの詳細は、Oracle9i データベース・ドキュメントの『PL/SQL ユーザーズ・ガイ ドおよびリファレンス』を参照してください。 パラメータ数が同じサブプログラムをオーバーロードする場合は、パラメータに違う名前を 付ける必要があります。HTML データはデータ型に関連付けられないため、mod_plsql は、 どのバージョンのサブプログラムをコールすればよいか判断できません。 たとえば、PL/SQL では、プロシージャに対して同じパラメータ名を使用して、次の例に示 す 2 つのプロシージャを定義できますが、これを mod_plsql で使用するとエラーが発生しま す。 -- legal PL/SQL, but not for mod_plsql CREATE PACKAGE my_pkg AS PROCEDURE my_proc (val IN VARCHAR2); PROCEDURE my_proc (val IN NUMBER); END my_pkg; エラーを回避するには、パラメータに異なる名前をつけます。たとえば、次のようになりま す。 -- legal PL/SQL and also works for mod_plsql CREATE PACKAGE my_pkg AS PROCEDURE my_proc (valvc2 IN VARCHAR2); PROCEDURE my_proc (valnum IN NUMBER); END my_pkg; 最初のバージョンのプロシージャを実行する URL は次のようになります。 http://www.acme.com/pls/mydad/my_pkg.my_proc?valvc2=input 2 番目のバージョンのプロシージャを実行する URL は次のようになります。 http://www.acme.com/pls/mydad/my_pkg.my_proc?valnum=34 mod_plsql の概要 2-7 パラメータの受渡し オーバーロードと PL/SQL 配列 パラメータ名が同じで、1 つのプロシージャのデータ型が owa_util.ident_arr(varchar2 の 表) 、もう 1 つのプロシージャのデータ型がスカラー型のオーバーロード PL/SQL プロシー ジャがあるとします。このような場合でも、mod_plsql はこの 2 つのプロシージャを区別で きます。たとえば、次のプロシージャがあるとします。 CREATE PACKAGE my_pkg AS PROCEDURE my_proc (val IN VARCHAR2); -- scalar data type PROCEDURE my_proc (val IN owa_util.ident_arr); -- array data type END my_pkg; これらのプロシージャには、それぞれ val という同じ名前のパラメータが 1 つあります。 mod_plsql が val パラメータの値を 1 つだけ持つリクエストを受け取ると、スカラー・デー タ型のプロシージャが実行されます。 例 1: 次の URL を送信して、スカラー・バージョンのプロシージャを実行するとします。 http://www.acme.com/pls/mydad/my_proc?val=john mod_plsql は、val パラメータの値が複数存在するリクエストを受け取ると、配列データ型 のプロシージャを実行します。 例 2: 次の URL を送信して、配列バージョンのプロシージャを実行するとします。 http://www.acme.com/pls/mydad/my_proc?val=john&val=sally 確実に配列バージョンを実行できるようにする場合は、HTML ページで HIDDEN フォー ム・エレメントを使用してダミーの値を送信します。このダミーの値は、プロシージャ内で チェックされ、破棄されます。 柔軟なパラメータの受渡し mod_plsql は、任意の数のエレメントが選択可能な HTML フォームを処理するために、柔 軟なパラメータの受渡しをサポートします。URL ベースのプロシージャ実行で柔軟なパラ メータの受渡しを使用するには、URL 内でプロシージャ名の先頭に感嘆符(!)を付加しま す。2 パラメータまたは 4 パラメータを使用できます。2 パラメータ・インタフェースによっ て、mod_plsql のパフォーマンスが改善されます。4 パラメータ・インタフェースは、互換 性維持のためにサポートされています。 2 パラメータ・インタフェース procedure [proc_name] is name_array IN [array_type], value_array IN [array_type], 2-8 Oracle9i Application Server mod_plsql ユーザーズ・ガイド パラメータの受渡し 表 2-2 2 パラメータ・インタフェースのパラメータ パラメータ 説明 proc_name 実行する PL/SQL プロシージャの名前です。 (必須) name_array 問合せ文字列から取り出される名前(1 から順番に索引付けされ る)を送信された順序で示します。 value_array 問合せ文字列から取り出される値(1 から順番に索引付けされる) を送信された順序で示します。 array_type 問合せ文字列から取り出される値(1 から順番に索引付けされる) を送信された順序で示します。 (必須) 例 : 次の URL を送信したとします。 http://www.acme.com/pls/mydad/!scott.my_proc?x=john&y=10&z=doe 感嘆符(!)接頭辞により、柔軟なパラメータの受渡しを使用する必要があることを mod_ plsql に知らせます。これにより、プロシージャ scott.myproc が実行され、次の 2 つの引 数が渡されます。 name_array ==> (‘x’, ‘y’, ‘z’) values_array ==> (’john’, ’10’, ’doe’) 4 パラメータ・インタフェース 4 パラメータ・インタフェースは、互換性維持のためにサポートされています。 procedure [proc_name] (num_entires name_array value_array reserved in is IN NUMBER, IN [array_type], IN [array_type], [array_type]); 表 2-3 4 パラメータ・インタフェースのパラメータ パラメータ 説明 proc_name 実行する PL/SQL プロシージャの名前です。 (必須) num_entries 問合せ文字列内の名前 / 値ペアの数です。 name_array 問合せ文字列から取り出される名前(1 から順番に索引付けされ る)を送信された順序で示します。 value_array 問合せ文字列から取り出される値(1 から順番に索引付けされる) を送信された順序で示します。 mod_plsql の概要 2-9 パラメータの受渡し 表 2-3 4 パラメータ・インタフェースのパラメータ(続き) パラメータ・インタフェースのパラメータ(続き) パラメータ 説明 reserved 未使用です。今後使用するために予約されています。 array_type varchar2 型の表による任意の PL/SQL 索引です(owa.vc_arr な ど)。 (必須) 例 : query_string で名前 x が重複している次の URL を送信したとします。 http://www.acme.com/pls/mydad/!scott.my_pkg.my_proc?x=a&y=b&x=c 感嘆符(!)接頭辞により、柔軟なパラメータの受渡しを使用することが mod_plsql に指示 されます。これにより、プロシージャ scott.my_pkg.myproc が実行され、次の 2 つの引 数が渡されます。 num_entries ==> 3 name_array ==> (‘x’, ‘y’, ‘x’); values_array ==> (‘a’, ‘b’, ‘c’) reserved ==> () 大きなパラメータの受渡し スカラー引数として渡される値と、varchar2 引数の索引付き表の要素として渡される値に使 用できるサイズは、最大 32KB です。 たとえば、柔軟なパラメータの受渡し(2-8 ページの「柔軟なパラメータの受渡し」を参照) を使用する場合、URL の query_string 部分の名前または値は、それぞれ実行されるプロ シージャの name_array または value_array 引数のエレメントとして渡されます。これ らの名前または値に使用できるサイズは、最大 32KB です。 2-10 Oracle9i Application Server mod_plsql ユーザーズ・ガイド ファイルのアップロードとダウンロード ファイルのアップロードとダウンロード mod_plsql では、次の機能を提供します。 ■ ■ ■ キャラクタ・セットを変換せずに、ファイルをロー・バイト・ストリームとしてアップ ロードおよびダウンロードすることが可能です。ファイルは、ドキュメント表にアップ ロードされます。PL/SQL アップロード・ハンドラ・ルーチンが適切な表の列を取得で きるよう、主キーが渡されます。 異なるアプリケーションのファイルを混同しないよう、アプリケーションごとに 1 つ以 上、アップロードされるファイル用の表を指定することが可能です。 問合せ文字列を使用しない形式の URL 経由でこれらの表のファイルにアクセスすること が可能です。たとえば、次のようになります。 http://www.acme.com:9000/pls/mydad/docs/cs250/lecture1.htm これは、URL の相互参照を含んだファイル・セットのアップロードをサポートするため に必要です。 ■ ■ 1 回のフォーム送信につき複数のファイルをアップロードすることが可能です。 ドキュメント表の LONG RAW および BLOB(バイナリ・ラージ・オブジェクト)型の 列にファイルをアップロードすることが可能です。 ドキュメント表の定義 DAD ごとにドキュメント格納表を指定できます。ドキュメント格納表には、次の定義が必 要です。 CREATE TABLE [table_name] ( NAME VARCHAR2(256) UNIQUE NOT NULL, MIME_TYPE VARCHAR2(128), DOC_SIZE NUMBER, DAD_CHARSET VARCHAR2(128), LAST_UPDATED DATE, CONTENT_TYPE VARCHAR2(128), [content_column_name] [content_column_type] [ , [content_column_name] [content_column_type]] ); table_name は、ユーザーが選択できます。content_column_type 型には、LONG RAW または BLOB のいずれかを使用します。 content_column_name は、対応する content_column_type によって異なります。 ■ content_column_type が LONG RAW の場合、content_column_name は CONTENT にする必要があります。 mod_plsql の概要 2-11 ファイルのアップロードとダウンロード ■ content_column_type が BLOB の場合、content_column_name は BLOB_ CONTENT にする必要があります。 次に、有効なドキュメント表の定義例を示します。 NAME MIME_TYPE DOC_SIZE DAD_CHARSET LAST_UPDATED CONTENT_TYPE CONTENT BLOB_CONTENT VARCHAR(128) VARCHAR(128), NUMBER, VARCHAR(128), DATE, VARCHAR(128), LONG RAW, BLOB ; UNIQUE NOT NULL, CONTENT 列の意味 表の内容は、CONTENT 列に格納されます。ドキュメント表には、複数の CONTENT 列を 含めることが可能です。ただし、ドキュメント表の各行について、CONTENT 列は 1 つのみ 使用されます。その他の CONTENT 列は NULL に設定されます。 CONTENT_TYPE 列の意味 CONTENT_TYPE 列は、ドキュメントが格納されている CONTENT 列を追跡するために使用 されます。ドキュメントがアップロードされると、mod_plsql により、この列の値が型名に 設定されます。 たとえば、ドキュメントが BLOB_CONTENT 列にアップロードされた場合、ドキュメント の CONTENT_TYPE 列には文字列 BLOB が設定されます。 LAST_UPDATED 列の意味 LAST_UPDATED 列には、ドキュメントの作成日時または最終更新日時が反映されます。ド キュメントがアップロードされると、mod_plsql により、ドキュメントの LAST_UPDATED 列にデータベース・サーバーの時間が設定されます。 その後、アプリケーションがドキュメントの内容または属性を変更する場合、 LAST_ UPDATED の時間も更新されるようにする必要があります。 mod_plsql では、LAST_UPDATED 列を使用して、HTTP クライアント(ブラウザ)がドキュ メントのキャッシュ済みバージョンを使用できるかどうかをチェックし、HTTP クライアン トに結果を知らせます。これにより、ネットワークの通信量が削減され、サーバーのパ フォーマンスが改善されます。 DAD_CHARSET 列の意味 DAD_CHARSET 列は、ファイルのアップロード時のキャラクタ・セット設定を追跡します。 この列は、今後使用するために予約されています。 2-12 Oracle9i Application Server mod_plsql ユーザーズ・ガイド ファイルのアップロードとダウンロード 以前のスタイルのドキュメント表の定義 WebDB リリース 2.x より前のリリースで使用されているドキュメント・モデルとの下位互 換性を維持するために、mod_plsql では、CONTENT_TYPE、DAD_CHARSET および LAST_UPDATED 列が存在しない、以前のドキュメント格納表の定義もサポートしていま す。 /* older style document table definition (DEPRECATED) */ CREATE TABLE [table_name] ( NAME VARCHAR2(128), MIME_TYPE VARCHAR2(128), DOC_SIZE NUMBER, CONTENT LONG RAW ); ドキュメントのアップロード / ダウンロードのパラメータ 各 DAD について、次の設定パラメータがファイルのアップロードまたはダウンロードに関 係します。 PlsqlDocumentTablename PlsqlDocumentTablename パラメータは、この DAD によってファイルがアップロードさ れたときにドキュメントを格納する表を指定します。 構文 : PlsqlDocumentTablename [document_table_name] PlsqlDocumentTablename my_documents 例: または PlsqlDocumentTablename scott.my_document_table PlsqlDocumentPath(ドキュメント・アクセス・パス) (ドキュメント・アクセス・パス) PlsqlDocumentPath パラメータは、ドキュメントにアクセスするためのパス・エレメン トを指定します。PlsqlDocumentPath パラメータは、URL 内で DAD 名の後に付加されま す。たとえば、ドキュメント・アクセス・パスが docs の場合、URL は次のようになりま す。 http://neon/pls/mydad/docs/myfile.htm mydad は DAD 名で、myfile.htm はファイル名です。 mod_plsql の概要 2-13 ファイルのアップロードとダウンロード 構文 : PlsqlDocumentPath [document_access_path_name] PlsqlDocumentProcedure(ドキュメント・アクセス・プロシージャ) (ドキュメント・アクセス・プロシージャ) PlsqlDocumentProcedure プロシージャは、アプリケーション指定のプロシージャです。 このプロシージャはパラメータがなく、ドキュメント・アクセス・パスを持つ URL リクエ ストを処理します。ドキュメント・アクセス・プロシージャは、ファイルをダウンロードす るために、wpg_docload.download_file(filename) をコールします。ドキュメント・ アクセス・プロシージャは、URL 指定に基づいてファイル名を認識します。たとえば、アプ リケーションでこれを使用して、ファイル・レベルのアクセス制御やバージョン管理を実装 することが可能です。このようなアプリケーションの例を、2-18 ページの「ファイルのダウ ンロード」で示します。 構文 : PlsqlDocumentProcedure [document_access_procedure_name] PlsqlDocumentProcedure my_access_procedure 例: または PlsqlDocumentProcedure scott.my_pkg.my_access_procedure PlsqlUploadAsLongRaw DAD パラメータ PlsqlUploadAsLongRaw は、ファイル拡張子に基づいてファイルのアッ プロードを設定します。PlsqlUploadAsLongRaw DAD パラメータの値は、1 行に 1 つの エントリがあるファイル拡張子のリストです。これらの拡張子を持つファイルは、mod_ plsql により、ドキュメント表の long_raw 型の CONTENT 列にアップロードされます。他 の拡張子を持つファイルは、BLOB CONTENT 列にアップロードされます。 ファイル拡張子には、テキスト・リテラル(jpeg、gif など)またはアスタリスク(*)を使 用できます。アスタリスクは、PlsqlUploadAsLongRaw 設定でリストされていない拡張子 を持つすべてのファイルに一致します。 構文 : PlsqlUploadAsLongRaw [file_extension] PlsqlUploadAsLongRaw * [file_extension] はファイル拡張子(ピリオド(.)の有無は関係なく、たとえば、txt または .txt が使用可能です)またはワイルド・カード文字(*)です。 2-14 Oracle9i Application Server mod_plsql ユーザーズ・ガイド ファイルのアップロードとダウンロード 例: PlsqlUploadAsLongRaw PlsqlUploadAsLongRaw PlsqlUploadAsLongRaw html txt * ファイルのアップロード クライアント・マシンからデータベースにファイルを送信する場合は、次に示す内容を含ん だ HTML ページを作成します。 ■ ■ enctype 属性に multipart/form-data が設定され、action 属性に「アクション・プロ シージャ」と呼ばれる mod_plsql プロシージャ・コールが関連付けられている FORM タグ。 type 属性と name 属性に file が設定された INPUT エレメント。INPUT type="file" エ レメントを使用すると、ユーザーはファイル・システムのファイルを参照して、そこか らファイルを選択できます。 ユーザーが「 「Submit」 」ボタンをクリックすると、次のイベントが発生します。 1. ブラウザは、ユーザーが指定したファイルとその他のフォーム・データをサーバーに アップロードします。 2. mod_plsql は、ファイルの内容をデータベースのドキュメント格納表内に格納します。 表の名前は、PlsqlDocumentTablename DAD パラメータから導出されます。 3. FORM の action 属性で指定したアクション・プロシージャが、ファイルのアップロー ドを行わずに mod_plsql プロシージャを実行する場合と同じように実行されます。 次の例に、アップロードするファイルをユーザーがファイル・システムから選択可能な HTML フォームを示します。このフォームには、ファイルに関する情報を入力できるその他 のフィールドも含まれています。 <html> <head> <title>test upload</title> </head> <body> <FORM enctype="multipart/form-data" action="pls/mydad/write_info" method="POST"> <p>Author’s Name:<INPUT type="text" name="who"> <p>Description:<INPUT type="text" name="description"><br> <p>File to upload:<INPUT type="file" name="file"><br> <p><INPUT type="submit"> </FORM> </body> </html> mod_plsql の概要 2-15 ファイルのアップロードとダウンロード ユーザーがフォームの「 「Submit」 」ボタンをクリックすると、次の処理が実行されます。 a. ブラウザにより、INPUT type="file" エレメントにリストされたファイルが アップロードされます。 b. 次に、write_info プロシージャが実行されます。 c. このプロシージャは、フォームのフィールドの情報をデータベース内の表に書き込 み、ページをユーザーに返します。 注意 : アクション・プロシージャは、ユーザーにレスポンスを返す必要は ありませんが、次に示すように、送信が成功したか失敗したかをユーザー に知らせるようにすることをお薦めします。 procedure write_info ( who in varchar2, description in varchar2, file in varchar2) as begin insert into myTable values (who, description, file); htp.htmlopen; htp.headopen; htp.title('File Uploaded'); htp.headclose; htp.bodyopen; htp.header(1, 'Upload Status'); htp.print('Uploaded ' || file || ' successfully'); htp.bodyclose; htp.htmlclose; end; 名前の競合の可能性を低減するために、ブラウザから取得したファイル名の先頭に、生成さ れたディレクトリ名が付加されます。フォームで指定されたアクション・プロシージャによ り、この名前が変更されます。このため、たとえば /private/minutes.txt がアップロー ドされた場合、mod_plsql によって表に格納された名前は、 F9080/private/minutes.txt となります。アプリケーションは、コールしたストアド・ プロシージャの中で、この名前を変更できます。たとえば、アプリケーションにより、名前 を scott/minutes.txt に変更できます。 2-16 Oracle9i Application Server mod_plsql ユーザーズ・ガイド ファイルのアップロードとダウンロード アップロード・ファイルの属性(MIME タイプ)の指定 アップロード・ファイルの属性( ストアド・プロシージャは、アップロード・ファイルの名前を変更する以外にも、他のファ イル属性を変更できます。たとえば、2-15 ページの「ファイルのアップロード」に示した例 のフォームでは、アップロードするドキュメントの Multipurpose Internet Mail Extension (MIME)タイプをユーザーが入力するフィールドとして表示できます。 MIME タイプは、write_info のパラメータとして受信できます。その場合、ドキュメント 表には、ファイルのアップロード時に mod_plsql がマルチパート・フォームから解析したデ フォルトの MIME タイプではなく、そのドキュメントの MIME タイプが格納されます。 複数のファイルのアップロード 1 回の送信で複数のファイルを送信する場合は、アップロード・フォームに複数の <INPUT type="file" name="file">エレメントが含まれている必要があります。複数のINPUTエ レメントで、name に同じ名前を定義する場合、アクション・プロシージャでパラメータ名 を owa.vc_arr 型として宣言する必要があります。ファイルの INPUT エレメントに一意の名 前を定義することも可能で、その場合、アクション・プロシージャでそれぞれを varchar2 として宣言する必要があります。たとえば、フォームに次のエレメントが含まれているとし ます。 <INPUT type="file" name="textfiles"> <INPUT type="file" name="textfiles"> <INPUT type="file" name="binaryfile"> この場合、アクション・プロシージャに次のパラメータを含める必要があります。 procedure handle_text_and_binary_files(textfiles IN owa.vc_arr, binaryfile IN varchar2). mod_plsql の概要 2-17 ファイルのアップロードとダウンロード ファイルのダウンロード ファイルをデータベースに送信した後、それらのファイルのダウンロード、データベースか らの削除、および属性の読込みと書込みが可能になります。 ファイルをダウンロードするには、ダウンロードを開始するために wpg_docload.download_file(file_name) をコールする、パラメータを持たないスト アド・プロシージャを作成します。 ユーザーに表示される HTML ページには、ドキュメント・アクセス・パスを含み、ダウン ロードするファイルを指定する URL へのリンクが示されます。 たとえば、DAD のドキュメント・アクセス・パスに docs、ドキュメント・アクセス・プロ シージャに mydad.process_download が指定されている場合、ユーザーが次の URL をク リックすると、mydad.process_download プロシージャがコールされます。 http://www.acme:9000/pls/mydad/docs/myfile.htm 次に、process_download の実装例を示します。 procedure process_download is v_filename varchar2(255); begin -- getfilepath() uses the SCRIPT_NAME and PATH_INFO cgi -- environment variables to construct the full pathname of -- the file URL, and then returns the part of the pathname -- following '/docs/' v_filename := getfilepath; select name into v_filename from plsql_gateway_doc where UPPER(name) = UPPER(v_filename); -- now we call docload.download_file to initiate -- the download. wpg_docload.download_file(v_filename); exception when others then v_filename := null; end process_download; mod_plsql で実行中のプロシージャから wpg_docload.download_file(filename) を コールすると、ファイル filename のダウンロードが開始されます。ファイルのダウンロー ド中は、このプロシージャによって生成される(HTP インタフェースを介して生成される) 他の HTML は、ブラウザに返されません。 mod_plsql は、ドキュメント表からそのファイル名を探します。ドキュメント表内には、 NAME 列がファイル名に一致する一意の行が存在する必要があります。mod_plsql は、ド キュメント表の MIME_TYPE 列の情報に基づき、HTTP レスポンス・ヘッダーを生成しま す。CONTENT_TYPE 列の値により、ドキュメントの内容がどの CONTENT 列から取得され るかが決まります。ドキュメントの内容は、HTTP Response Body として送信されます。 2-18 Oracle9i Application Server mod_plsql ユーザーズ・ガイド ファイルのアップロードとダウンロード BLOB のダイレクト・ダウンロード バイナリ・ラージ・オブジェクト(BLOB)データ型として格納されているコンテンツをダ ウンロードすることもできます。 1. wpg_docload.download_file(blob) をコールするストアド・プロシージャを作成します。 blob は BLOB データ型です。mod_plsql には BLOB の内容に関する情報が含まれていな いため、情報を入力する必要があります。 2. Content-Type およびその他のヘッダーを設定します。 例 : 次のプロシージャでは、引数の名前を使用して表から BLOB を選択し、BLOB のダ イレクト・ダウンロードを開始します。 procedure download_blob(varchar2 name) is myblob blob; begin a. name 引数を使用して、mytable から BLOB を選択します。 select blob_data into myblob from mytable where blob_name = name; b. コンテンツを説明するヘッダーを設定します。 owa_util.mime_header('text/html', FALSE); htp.p('Content-Length: ' || dbms_lob.get_length(myblob)); owa_util.http_header_close; c. BLOB のダイレクト・ダウンロードを開始します。 wpg_docload.download_file(myblob); end; mytable 表の構造は、次のとおりです。 create table mytable ( blob_name varchar2(128), blob_data blob ); 3. ユーザーに表示される HTML ページには、適切な引数を使用してこのストアド・プロ シージャをコールする URL へのリンクが示されます。 4. BLOB のダイレクト・ダウンロード中は、このプロシージャによって生成される(HTP インタフェースを介して生成される)他の HTML は、ブラウザに返されません。 mod_plsql の概要 2-19 パスのエイリアシング(ダイレクト・アクセス URL) パスのエイリアシング(ダイレクト・アクセス URL) ) パスのエイリアシングにより、mod_plsql を使用するアプリケーションは、単純な URL に よるアプリケーション内のオブジェクトへの直接参照を提供できます。これにより、ドキュ メント・アクセス・パスとドキュメント・アクセス・プロシージャを使用して、アプリケー ション内のドキュメントに直接アクセスできます。たとえば、次の URL の docs キーワード は、このリクエストがドキュメント・アクセスであることを mod_plsql に知らせます。 protocol://hostname[:port]/DAD Location/docs/<FolderName/Document> この例では、ドキュメント・アクセス・パスは docs です。 パスのエイリアシングにより、ドキュメント以外のアプリケーション・オブジェクトに対し ても、同様にダイレクト・アクセスのための手段が提供されます。データベース・アクセス 記述子(DAD)の設定情報にある次の 2 つのフィールドで、パスのエイリアシングがサポー トされます。 ■ Path Alias ■ Path Alias Procedure mod_plsql は、Path Alias フィールドに入力されたキーワードを持つ受信 URL を検出する と、Path Alias Procedure フィールドに入力されたプロシージャを実行します。 たとえば、次の URL が受信 URL で、Path Alias が myalias に設定されている場合、mod_ plsql は、Path Alias Procedure を実行します。これにより、キーワード myalias 以下すべ てが、実行されるプロシージャに渡されます。 http://www.acme.com:9000/pls/mydad/myalias/foo/bar/foobar パスのエイリアシングを使用するアプリケーションは、Path Alias Procedure を実装する必 要があります。プロシージャは、URL のキーワード myalias より後の部分 (foo/bar/foobar)を 1 つのパラメータとして受け取ります。これは、URL からオブジェ クトを間接参照するためです。 このプロシージャの名前と場所に制限はありませんが、受け取ることができるのは、 varchar2 データ型の単一パラメータである p_path のみです。 2-20 Oracle9i Application Server mod_plsql ユーザーズ・ガイド Common Gateway Interface(CGI)環境変数 Common Gateway Interface( (CGI)環境変数 )環境変数 OWA_UTIL パッケージには、CGI 環境変数の値を取得するための API が付属しています。 CGI 環境変数の値は、mod_plsql によって実行されるプロシージャにコンテキストを提供し ます。mod_plsql は CGI によって処理されませんが、mod_plsql から実行される PL/SQL アプリケーションは、これらの CGI 環境変数にアクセス可能です。 表 2-4 CGI 環境変数 AUTHORIZATION PlsqlDocumentTablename DAD_NAME REMOTE_ADDR DOC_ACCESS_PATH REMOTE_HOST HTTP_ACCEPT REMOTE_USER HTTP_ACCEPT_CHARSET REQUEST_CHARSET(2-23 ページの 「REQUEST_CHARSET CGI 環境変数」を参照) HTTP_ACCEPT_LANGUAGE REQUEST_IANA_CHARSET HTTP_COOKIE REQUEST_METHOD HTTP_HOST REQUEST_PROTOCOL HTTP_PRAGMA SCRIPT_NAME HTTP_REFERER SCRIPT_PREFIX HTTP_USER_AGENT SERVER_NAME PATH_ALIAS SERVER_PORT PATH_INFO SERVER_PROTOCOL PL/SQL アプリケーションは、owa_util.get_cgi_env インタフェースを使用して CGI 環境変 数の値を取得できます。 構文 : owa_util.get_cgi_env(param_name in varchar2) return varchar2; param_name は、CGI 環境変数の名前です。param_name には大 / 小文字区別があります。 mod_plsql の概要 2-21 Common Gateway Interface(CGI)環境変数 CGI 環境変数の追加およびオーバーライド PlsqlCGIEnvironmentList DAD パラメータは、1 行に 1 つのエントリがある、名前 / 値ペアのリストです。任意の環境変数をオーバーライドしたり、新規の環境変数を追加でき ます。名前が付属の環境変数(2-21 ページの「Common Gateway Interface(CGI)環境変 数」のリストを参照)の 1 つである場合、その環境変数は指定した値にオーバーライドされ ます。名前が付属の環境変数のリストにない場合は、パラメータで指定された名前および値 と同じ新規の環境変数がリストに追加されます。 注意 : mod_plsql の設定ファイルについては、 『Oracle9i Application Server Oracle HTTP Server 管理ガイド』を参照してください。 パラメータの値が指定されていない場合は、Oracle HTTP Server から値が取得されます。 Apache の場合は、次のように指定して CGI 環境変数の DOCUMENT_ROOT を渡すことが できます。 PlsqlCGIEnvironmentList DOCUMENT_ROOT この設定パラメータから渡された新規の環境変数は、owa_util.get_cgi_env インタフェース を経由して PL/SQL アプリケーションで使用可能です。 例 1: PlsqlCGIEnvironmentList SERVER_NAME=myhost.mycompany.com PlsqlCGIEnvironmentList REMOTE_USER=testuser この例では、CGI 環境変数の SERVER_NAME と REMOTE_USER が付属の環境変数リスト に含まれているため、これらの環境変数が指定の値にオーバーライドされます。 例 2: PlsqlCGIEnvironmentList MYENV_VAR=testing PlsqlCGIEnvironmentList SERVER_NAME=, PlsqlCGIEnvironmentList REMOTE_USER=user2 この例では、SERVER_NAME 変数と REMOTE_USER 変数がオーバーライドされます。 SERVER_NAME 変数は、値が指定されていないため、削除されます。MYENV_VAR という 新規の環境変数は、付属の環境変数のリストに含まれていないため追加されます。この環境 変数には、testing という値が割り当てられます。 2-22 Oracle9i Application Server mod_plsql ユーザーズ・ガイド mod_plsql での制限事項 PlsqlNLSLanguage mod_plsql では、各国語サポート変数(PlsqlNLSLanguage)を、環境変数として設定する か、または DAD レベルで設定できます。次のいずれかの制限が適用されます。 ■ データベースと Oracle HTTP Server powered by Apache とで、それぞれの PlsqlNLSLanguage パラメータは、一致する必要があります。 または ■ データベースと Oracle HTTP Server powered by Apache の、それぞれの PlsqlNLSLanguage パラメータは、文字幅が固定で、サイズが同じであることが必要で す。 REQUEST_CHARSET CGI 環境変数 mod_plsql に対するリクエストは、すべて DAD に関連付けられます。CGI 環境変数 REQUEST_CHARSET は、次のように設定されます。 ■ REQUEST_CHARSET は、PlsqlNLSLanguage 環境変数から導出された使用中のデフォ ルト・キャラクタ・セットに設定されます。ただし、DAD レベルで PlsqlNLSLanguage パラメータが設定されている場合は、キャラクタ・セット情報を導出します。 PL/SQL アプリケーションは、フォームのファンクション・コールによってこの情報にアク セスできます。 owa_util.get_cgi_env('REQUEST_CHARSET'); REQUEST_IANA_CHARSET CGI 環境変数 これは、CGI 環境変数 REQUEST_CHARSET に相当する IANA(Internet Assigned Number Authority)の環境変数です。IANA は、インターネット上のキャラクタ・セットの標準をグ ローバルに調整する機関です。 mod_plsql での制限事項 mod_plsql には、次の制限があります。 ■ ■ ■ HTTP Cookie ヘッダーの最大長は 32000 バイトです。このバイト数を超えるとエラーが 発生します。この制限は、PL/SQL の varchar2 型の制限によるものです。 HTTP Cookie 内にある各 Cookie の最大長は 3990 バイトです。このバイト数を超えると エラーが発生します。この制限は、配列内の文字列の OCI 配列バインド制限によるもの です。 mod_plsql では、一度に設定できる Cookie の最大数は制限されており変更できません。 この制限は、最大数 20 に設定されています。20 を超えると、それ以降の Cookie は削 除されます。 mod_plsql の概要 2-23 mod_plsql での制限事項 2-24 Oracle9i Application Server mod_plsql ユーザーズ・ガイド 索引 記号 G ! 記号 柔軟なパラメータの受渡し,2-8 定義,2-4 GET 方式,2-5 数字 HEAD 方式,2-5 HTTP HEAD リクエスト,2-5 2 パラメータ 柔軟なパラメータの受渡し,2-8 4 パラメータ 柔軟なパラメータの受渡し,2-9 L B BLOB ダイレクト・ダウンロード,2-19 ドキュメント表の定義,2-12 C CGI 環境変数,2-22 CONTENT_TYPE 列,2-12 CONTENT 列,2-12 Cookie の制限,2-23 D DAD 定義,2-3 DAD_CHARSET 列,2-12 DAD の設定,1-5 DTD,2-11 以前のスタイル,2-13 H LAST_UPDATED 列,2-12 LONG RAW ドキュメント表の定義,2-11 M MIME タイプ,2-17 mod_plsql 実行,2-4 設定,1-5 mod_plsql の設定,1-5 N nls_lang 定義,2-23 O Oracle ドキュメント,iv OTN-J(Oracle Technology Network Japan),v OWA Web Toolkit リファレンス・ガイド,iv owa_util PL/SQL Web Toolkit パッケージ,2-21 owaload.sql,1-3 索引 -1 P し POST 方式,2-5 システム要件,1-2 柔軟なパラメータの受渡し,2-8 R REQUEST_CHARSET,2-23 REQUEST_IANA_CHARSET,2-23 W Web Toolkit リファレンス・マニュアル,iv WebDB リスナーのアップグレード,1-4 あ せ 制限,2-23 設定 mod_plsql,1-5 設定、DAD,1-5 設定、mod_plsql,1-5 た ダイレクト・アクセス URL,2-20 ダウンロード,2-11 アップロード,2-11 い インストール,1-2 お と ドキュメント・アクセス・パス,2-13 ドキュメント表の定義,2-11 以前のスタイル,2-13 トランザクション・モデル,2-6 トレーニングに関する Web サイト,v オーバーロード,2-7,2-8 か カスタマ・サービス,v 環境変数 CGI,2-21 関連文書,iv く クライアント・リクエスト,2-2 け 言語パラメータ(nls_lang),2-23 研修に関する Web サイト,v さ サポート・サービス,v 索引 -2 は 配列,2-8 パラメータ 受渡し,2-6,2-8 大きな,2-10 オーバーロード,2-7 柔軟な,2-8 ふ ファイルのアップロード,2-11,2-15 属性,2-17 複数のファイル,2-17 ファイルのダウンロード,2-18