SQL ルーチンまたは外部ルーチンを使用する場合の判断

ルーチン・ロジックをインプリメントする場合、SQL ルーチンまたは外部ルーチンのインプリメントを選択できます。 これら 2 つの各インプリメンテーションを選択するには、それぞれ理由があります。

このタスクについて

SQL ルーチンが要件を満たす限り、外部ルーチンよりも SQL ルーチンを選択してください。 複雑なロジックを実装しなければならない場合、あるいはデータベース・サーバー上のファイルまたはスクリプトにアクセスしなければならない場合は、外部ルーチンを使用してください。

手順

  • 以下の場合は、SQL ルーチンのインプリメントを選択します。
    • SQL PL および SQL ステートメントは、必要とするロジックをインプリメントするための適切なサポートを提供する。
    • ルーチン・ロジックが主にデータを照会または変更する SQL ステートメントで構成されており、パフォーマンスを重視する。 データベース・データを照会または変更する SQL ステートメントの数と比較して、相対的に少量の制御フロー・ロジックを含むロジックは、一般に SQL ルーチン・インプリメンテーションの方がパフォーマンスは良くなります。 SQL PL は、データベース操作に関係したプロシージャー・ロジックのインプリメントに使用することを意図しており、プログラミング複合ロジックを主に意図しているわけではありません。
    • 実行する必要がある SQL ステートメントが、外部ルーチン・インプリメンテーションで実行できる場合。
    • オペレーティング・システム環境間で移植可能性が高いモジュールを作成し、プログラミング言語コード・コンパイラーおよびスクリプト・インタープリターへの依存を最小限にしたい。
    • 高水準プログラミング言語を使用して、ロジックを迅速かつ簡単にインプリメントしたい。
    • スクリプトまたはプログラミング言語を使用するよりも、SQL での作業に慣れている。
    • データベース管理システム内のロジックを保護したい。
    • リリースのアップグレードまたはオペレーティング・システムのアップグレード時の、ルーチン保守およびルーチン・パッケージ保守を最小化したい。
    • ロジックをインプリメントするために必要なコードの量を最小化したい。
    • メモリー管理、ポインター操作、または他の一般的なプログラミングの落とし穴となるリスクを最小化することで、インプリメントされるコードの最大限の安全性を確保したい。
    • SQL PL の使用時に選択可能な特殊 SQL キャッシング・サポートを活用したい。
  • 以下の場合は、外部プロシージャーのインプリメントを選択します。
    • ルーチン・ロジックが非常に複雑であり、少数の SQL ステートメントで構成されており、ルーチンのパフォーマンスを重視する。 大量のストリング処理が関係する、またはデータベースにアクセスしない、複雑な数学アルゴリズムなどのロジックは、一般に外部ルーチン・インプリメンテーションの方がパフォーマンスは良くなります。
    • 実行する必要がある SQL ステートメントが、外部ルーチン・インプリメンテーションで実行できる場合。
    • ルーチン・ロジックがオペレーティング・システム呼び出しを実行する - これは外部ルーチンでしか実行できません。
    • ルーチン・ロジックがファイルからの読み取りまたはファイルへの書き込みを必要とする - これは外部ルーチンでしか実行できません。
    • サーバー・ファイル・システムに書き込む。 これは注意深く実行してください。
    • データベース・サーバー上にあるアプリケーションまたはスクリプトを呼び出す。
    • SQL プロシージャーでサポートされていない特定の SQL ステートメントを発行する。
    • SQL PL 以外のプログラミング言語でのプログラミングに慣れている。