データベース・アプリケーション環境では、操作が繰り返し行われることがよくあります。 たとえば、一定のデータを受信する、データベースに対して複数の同じ要求を実行する、 または一定のデータを戻すなどです。 ストアード・プロシージャーでは、リモート・データベースに呼び出しを一度出すだけで、 事前プログラムされたプロシージャーを実行することができます。 1 回の呼び出しで、データベースに複数回アクセスできることになります。
リモート・データベースのための単一 SQL ステートメントを処理するには、 2 回の送信 (1 回の要求と 1 回の受信) が必要になります。 しかし、1 つのアプリケーションにたくさんの SQL ステートメントが含まれている場合があります。 ストアード・プロシージャーを使わないとすれば、 アプリケーションでの作業を完了するために送信が何回も必要になってしまいます。
データベース・クライアントでストアード・プロシージャーを使用するなら、 プロセス全体で送信は 2 回だけなので、 ネットワーク送信の回数が少なくなります。 ストアード・プロシージャーを呼び出すには、要求側のアプリケーションが、 そのプロシージャーの含まれているデータベースに接続されていることが必要です。
通常、これらのストアード・プロシージャーはデータベース・エージェントとは別のプロセスで実行されます。 このように分けているため、 ストアード・プロシージャーとエージェント・プロセスとはルーターを介して通信する必要があります。 ストアード・プロシージャーで可能なかぎり最高のパフォーマンスを得るには、 ストアード・プロシージャーを「承認された」、 または「分離していない」として指定し、その結果として、 このプロシージャーを直接データベース・エージェント・プロセスで実行させることができます。 「承認された」および「分離していない」とはどういう意味でしょうか?
これらの用語は両方とも、同じことを意味します。つまり、 ストアード・プロシージャーが「分離していない」場合は、 ストアード・プロシージャーは「承認された」状態になります。 データベースを壊す危険性を考えると、 最高のパフォーマンスを得る必要がある場合は、 分離していないストアード・プロシージャーだけを使用するようにしてください。 さらに、分離していないストアード・プロシージャーとして実行するためには、 プロシージャーが正しくコーディングされ、完全にテストされていることを確認する必要があります。 これらの、分離していないストアード・プロシージャーのいずれかを実行中に致命的エラーが発生した場合は、 データベース・マネージャーは、 このエラーがアプリケーションで発生したのかデータベース・マネージャーのコードで発生したのかを調べ、 適切な回復処置を実行します。
分離していないストアード・プロシージャーがデータベース・マネージャーを壊して回復不能にし、 結果としてデータの消失やデータベースの破壊を招く可能性もあります。 承認されたストアード・プロシージャーを実行する場合には、細心の注意を払う必要があります。 たいていの場合、 アプリケーションのパフォーマンス分析を適切に実行すれば、 このオプションを使用せずに望ましいパフォーマンスを得ることができます。 たとえば、トリガーを使用するとパフォーマンスが改善される場合があります。
ストアード・プロシージャーを分離していないとして作成するためには、 次の 2 つの方法があります。
ストアード・プロシージャーを実行するためには、 プロシージャーを呼び出すアプリケーションを実行するエンド・ユーザーには、 以下のいずれかの特権が実行時に必要です。
ストアード・プロシージャーを使用するプログラムの作成の説明については、 アプリケーション開発の手引き を参照してください。