Oracle E-Business Suite開発者ガイド リリース12.2 E53035-01 | 目次 | 前へ | 次へ |
Oracle Application Object Libraryにより、SQL*Plus、PL/SQL (データベースにPL/SQLをインストール済の場合)、SQL*LoaderまたはOracle Reportsでコンカレント・プログラムを記述できます。
SQL*PlusおよびPL/SQLプログラムでは、コンカレント・マネージャがデータベースへのログ記録、プログラムの起動、レポート出力ファイルへの出力の自動スプール、プログラム完了時のデータベースからのログオフを行います。プログラムがレポート出力を生成する場合、プログラムの完了後にコンカレント・マネージャがレポート出力ファイルを自動印刷するようプログラムを定義できます。標準要求発行を通して発行されたレポートには、実行時に印刷および発行情報を設定します。
関連項目: Oracle Reportsでのコンカレント処理
SQL*Plusプログラムでは、コンカレント・マネージャが次のようなコマンドのプロローグをSQL*Plusスクリプトに自動的に挿入します。
SQL*Plusプロローグ
SET TERM OFF
SET PAUSE OFF
SET HEADING OFF
SET FEEDBACK OFF
SET VERIFY OFF
SET ECHO OFF
WHENEVER SQLERROR EXIT FAILURE
コンカレント・マネージャは、SQL*Plusスクリプトにコマンドの挿入も行い、スクリプトの印刷形式に基づくLINESIZEを設定します。
SQLエラーの後にSQL*Plusスクリプトを継続する場合、SQL*Plusスクリプトへ次の行を挿入する必要があります。
WHENEVER SQLERROR CONTINUE
PL/SQLストアド・プロシージャは即時コンカレント・プログラムと同様に動作するので、コンカレント・マネージャが独立した起動プロセスを作成する必要はありません。
PL/SQLストアド・プロシージャを使用するコンカレント・プログラムでは、ログ・ファイルまたは出力ファイルを生成できます。
関連項目: コンカレント処理のPL/SQL API
作成するストアド・プロシージャ・コンカレント・プログラムは、最初の2つのパラメータとしてerrbufおよびretcodeが必要です。エラー・メッセージを戻すにはerrbufを、完了ステータスを戻すにはretcodeを使用します。パラメータretcodeは、成功した場合は0を、警告を伴う成功の場合は1を、エラーの場合は2を戻します。コンカレント・プログラムの実行後、コンカレント・マネージャはerrbufとretcodeの両方の内容を、コンカレント要求に関連付けられたログ・ファイルに書き込みます。詳細および例は、「コンカレント・プログラムの設計の概要」を参照してください。
パッケージFND_FILEには、コンカレント・プログラムの要求ログおよび出力ファイル(<PROD_TOP>/logおよび<PROD_TOP>/outに格納されている)への書込みを可能にするルーチンが含まれます。
注意: FND_FILEはコンカレント・プログラムのすべてのタイプでサポートされます。
ストアド・プロシージャが記録するテキストは、最初にデータベース・サーバーの一時ファイルに保存され、要求が完了すると、要求を実行したマネージャによりログおよび出力ファイルにコピーされます。ファイルのオープンおよびクローズは、コンカレント・マネージャにより背後で行われます。一時ファイルの読込みおよび書込みは、データ損失のリスクを最小化するようすべて自動的にフラッシュされます。
コンカレント・マネージャは、起動時にプールからファイル名の使用を試みることにより、共有プールのメンテナンスを行います。ファイル名が存在しない場合、マネージャは新しい一時ログおよび出力ファイルを作成します。これらの2つのファイルは各コンカレント要求の後に消去され、次の要求で再利用されます。その結果、必要以上に一時ファイルが作成されることはありません。
一時ファイルには、次のように名前が付けられます。ここで、xは7桁の順序番号です。
lxxxxxxx.req
oxxxxxxx.req
一時ファイルのディレクトリには、マネージャの起動時に環境変数APPLPTMPが設定されます。このディレクトリは、init.oraのUTL_FILE_DIRパラメータにもリストする必要があります。
必要なプロシージャをコールするだけで、これらのログおよび出力ファイルを記録できます。ファイルのオープンおよびクローズは、コンカレント・マネージャにより行われます。プロシージャ引数および例外の詳細については次に述べます。
これらのプロシージャには、いくつかの制限があります。一時ファイルは削除できませんが、サイズは0にできます。一時ファイルの削除は、必ずシステム管理者が行ってください。さらに、このパッケージは通常のPL/SQLテキスト入出力のためには設計できません。要求のログおよび出力ファイルの記録にのみ使用できます。
これらのAPIを使用すると、アプリケーションのパフォーマンスに影響することがあります。まず一時ファイルが作成され、その後ネットワーク越しに要求のログおよび出力ファイルにコピーされます。大きなファイルを移動すると時間がかかり、ネットワークの通信量がかなり大きくなる場合があります。それを回避するには、コンカレント・プログラムで記述するデータ量を抑制します。
SQL*Plusのデバッグおよびテストを容易にするため、プロシージャFND_FILE.PUT_NAMES(LOG, OUT, DIR)を使用できます。このファンクションにより、一時ログ名および出力ファイル名が設定され、一時ディレクトリにユーザー指定の値が設定されます。DIRは、必ずデータベースが書込み可能なディレクトリにしてください。FND_FILE.PUT_NAMESは、他のどのFND_FILEファンクションをコールするよりも前にコールする必要があります。SQL*Plusを使用している際にこのファンクションをコールしない場合、前述のようにFND_FILEがプールからファイル名を選択します。FND_FILE.PUT_NAMESは、セッションごとに一度のみ動作し、コンカレント・プログラムからコールされた場合は動作しません。プロシージャFND_FILE.CLOSEは、コマンドライン・セッションでファイルをクローズします。コンカレント・マネージャでファイルのクローズを実行するため、コンカレント・マネージャからFND_FILE.CLOSEをコールしないでください。
関連項目: FND_FILE: PL/SQLファイルI/O
SQL*Loaderプログラムでは、「コンカレント・プログラム実行ファイル」フォームで指定された制御ファイル上で、コンカレント・マネージャがSQLLOADを実行します。プログラムがレポート出力を生成する場合、プログラムの完了後にコンカレント・マネージャがレポート出力ファイルを自動印刷するようプログラムを定義できます。
制御ファイルにデータ・ファイルの情報を入力するか、フル・ディレクトリ・パスとデータ・ファイルのファイル名を引数として渡します。コンカレント・マネージャは要求の実行時に「データ= (データ・ファイルのフル・パス名)」トークンを渡します。データ・ファイル名がない場合、コンカレント・マネージャはそのトークンをスキップし、SQL*Loaderは制御ファイルで指定されたデータ・ファイル名を使用します。
アプリケーションを別のオペレーティング・システムまたはハードウェア・システムに移植する場合、データ・ファイルのディレクトリ名およびファイル名を確認し、必要に応じてプログラム引数の値を変更します。
プログラムを記述する際は、プログラムをコールして引数を渡すときと同じ順番で引数を受け取るように指定する必要があります。コンカレント・マネージャは、プログラムに直接引数を渡します。
SQL*PlusおよびPL/SQLプログラムでは、引数に&1、&2、&3というように名前を付け、渡す最初の引数が&1で取得され、2つめの引数が&2で取得されるようにします。
PL/SQLストアド・プロシージャでは、引数をINパラメータとして定義します。
SQL*Loaderプログラムでは、データ・ファイルのフル・ディレクトリ・パスおよびファイル名を引数として渡します。アプリケーションを別のオペレーティング・システムまたはハードウェア・システムに移植する場合、データ・ファイルのディレクトリ名およびファイル名を確認し、必要に応じてプログラム引数の値を変更します。
関連項目: Oracle Reportsパラメータ
使用しているオペレーティング・システムで大文字と小文字が区別されている場合は、Oracle Toolコンカレント・プログラムのファイル名にはすべて大文字を使用し、拡張子には小文字を使用します。
『Oracle E-Business Suiteセットアップ・ガイド』の情報から、使用しているオペレーティング・システムでのOracle Toolプログラムの正しい命名規則を特定してください。
Copyright © 1995, 2013, Oracle and/or its affiliates. All rights reserved.