違い: 1. ストアド プロシージャはデータベース内の特定の操作またはタスクを完了するために使用されますが、関数は特定のデータに使用されます; 2. ストアド プロシージャのプログラム ヘッダーは PROCEDURE で宣言され、戻り値の型はありません関数のプログラムヘッダはFUNCTIONで宣言されており、宣言時に戻り値の型を記述する必要があります。
このチュートリアルの動作環境: Windows 7 システム、Oracle 11g バージョン、Dell G3 コンピューター。
ストアド プロシージャ
ストアド プロシージャ (ストアド プロシージャ) は、特定の関数を完了するための SQL ステートメントのセットです。コンパイルされ、データベースの真ん中。ユーザーは、ストアド プロシージャの名前を指定し、パラメーターを指定することによって (ストアド プロシージャにパラメーターがある場合)、ストアド プロシージャを実行します。ストアド プロシージャはデータベース内の重要なオブジェクトであり、適切に設計されたデータベース アプリケーションではストアド プロシージャを使用する必要があります。ストアド プロシージャは、フロー制御と SQL ステートメントによって記述されたプロシージャです。このプロシージャはコンパイルおよび最適化されてデータベース サーバーに格納され、アプリケーション プログラムが使用するときにのみ呼び出す必要があります。 ORACLE では、いくつかの関連プロシージャを組み合わせてプログラム パッケージを形成できます。
利点:
1. ストアド プロシージャは作成時にのみコンパイルされるため、今後実行されるたびにストアド プロシージャを再コンパイルする必要はありません。ただし、一般的な SQL ステートメントは実行されるたびにコンパイルされますが、コンパイルは 1 回だけなので、ストアド プロシージャを使用するとデータベースの実行速度が向上します。
2. データベースに対して複雑な操作 (複数のテーブルに対する更新、挿入、クエリ、削除など) を実行する場合、この複雑な操作をストアド プロシージャにカプセル化し、ストアド プロシージャによって提供されるトランザクション処理と組み合わせることができます。データベースを使用します。
3. ストアド プロシージャは再利用できるため、データベース開発者の作業負荷を軽減できます。
4. セキュリティが高く、指定したストアドプロセスを特定のユーザーのみが使用できるように設定できます。
#ストアド プロシージャと関数の違い
#両者の最大の違いは次のとおりです:1 ). 関数は常に呼び出し元にデータを返し、通常は値のみを返します; 2). ストアド プロシージャ (プロシージャ) はデータを直接返すことはありませんが、出力パラメータの値を変更することができ、これはおおよそ返すものとみなすことができます。値。ストアド プロシージャの出力パラメータの値の数に制限はありません。
一般的なアプリケーションの観点から、戻り値が必要ない場合、または複数の戻り値が必要な場合はストアド プロシージャを使用し、戻り値が 1 つだけの場合は関数を使用します。
2. 関数定義には DDL (select など) ステートメントのみを含めることができます。DML ステートメントは主にプロシージャに含まれます (更新、挿入、データベース上で複雑な操作を実行する場合)。複数のテーブルに対するクエリと削除) )。
select の結果セットを使用したい場合は、カーソルを使用する必要があります。ストアド プロシージャ
|
関数
|
# # 特定のデータに使用 (クエリの戻り値など) | |
使用プログラム ヘッダー宣言の FUNCTION | |
戻り値の型プログラム ヘッダーおよび PL/SQL を宣言するときに記述する必要があります。ブロックには有効な RETURN ステートメントが少なくとも 1 つ含まれている必要があります | |
IN/OUT/IN OUT の 3 つのパラメータ モードが使用可能 | |
独立して実行することはできません。式の一部として呼び出す必要があります | |
を介した 0 個以上の値 RETURN ステートメントは値を返し、その値は宣言部分と一致します。OUT 型パラメータを介して変数を取り出すこともできます | |
SQL ステートメントでは関数を呼び出すことができます ( DML または SELECT) |
以上がOracle のストアド プロシージャと関数の違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。