ホームページ  >  記事  >  データベース  >  mysql ストアド プロシージャとストアド関数の違いは何ですか?

mysql ストアド プロシージャとストアド関数の違いは何ですか?

青灯夜游
青灯夜游オリジナル
2021-12-13 17:57:016978ブラウズ

違い: 1. ストレージ関数にはより多くの制限がありますが、ストアド プロシージャにはより少ない制限があります; 2. ストアド プロシージャの実装関数はより複雑ですが、ストレージ関数の実装関数はよりターゲットが絞られています; 3. ストレージ関数には戻り値が必要ですが、ストアド プロシージャには戻り値がなくても構いません; 4. 呼び出しの違い; 5. パラメータの違い。

mysql ストアド プロシージャとストアド関数の違いは何ですか?

このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。

ストアド プロシージャとストアド関数はオブジェクト指向プログラミング言語のメソッドに似ており、コードを簡素化し、コードの再利用性を向上させることができます。この記事では、ストアド プロシージャやストアド ファンクションの作成方法、ストアド プロシージャやストアド ファンクションの使用、変更、削除などの操作を中心に紹介します。

ストアド プロシージャとストアド ファンクション

MySQL はストアド プロシージャとストアド ファンクションのメカニズムを提供します。ここではストアド プロシージャとストアド ファンクションを使用します。ストアド関数。これらをまとめてストアド プロシージャと呼びます。ストアド プログラムは、最初にコンパイルしてすぐに実行する必要がある一般的な SQL 文とは異なり、特定の機能を完了するように設計された一連の SQL 文であり、コンパイルされてデータベースに保存されます。ユーザーがストアド プログラムの名前を指定する場合そして、パラメーターを指定します (ストアド プロシージャがパラメーターを指定して呼び出された場合にのみ実行される場合)。

ストアド プログラムは、1 つ以上の SQL 文と制御文の集合であり、MySQL のバッチ ファイルと考えることができます。もちろん、その役割はバッチ処理に限定されません。ストアド プロシージャは、プログラムが異なるアプリケーションやプラットフォーム間で同じ機能を実行する場合、または特定の機能をカプセル化する場合に便利です。データベース内のストアド プロシージャは、データへのアクセス方法を制御できるオブジェクト指向プログラミングへのオブジェクト指向アプローチとみなすことができます。

ストアド ファンクションとストアド プロシージャの違いは次のとおりです:

(1) ストレージ ファンクションには一時テーブルが使用できないなどの制限が多くあります。変数にはストアド プロシージャの制限が少なく、ストアド プロシージャの実装関数はより複雑ですが、関数の実装関数はよりターゲットが絞られています。

(2) 戻り値が異なります。ストアド関数は戻り値を持ち、結果値を 1 つだけ返す必要があります。ストアド プロシージャは戻り値を持たなくても構いませんが、結果セット (out、inout) を返すことができます。

(3) 呼び方の違い。ストアド関数は SQL に埋め込まれており、select に関数名 (変数値) を格納できます。ストアド プロシージャは call ステートメントを通じて呼び出され、ストアド プロシージャ名を呼び出します。

(4) パラメータの違い。ストアドファンクションのパラメータタイプは IN パラメータと同様であり、OUT および INOUT に類似するパラメータはありません。ストアド プロシージャには、IN、out、INOUT の 3 つのパラメータ タイプがあります:

a. in: データは内部使用 (値転送) のために外部からのみ渡され、数値または変数になります

b. out: プロセスの内部使用のみ許可 (外部データは使用されない)、外部使用 (参照渡し: 外部データは内部に入る前に最初にクリアされます)、変数

c. inout : 外部は内部で使用可能、内部で変更したものは外部でも使用可能 通常の参照転送は変数のみ転送可能です。

[関連する推奨事項: mysql ビデオ チュートリアル ]

以上がmysql ストアド プロシージャとストアド関数の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。