MySQLデータベースのコンテキストでは、これら3つの用語の違いは何ですか:
また、これらの日時関数のような組み込み関数(たとえば、WEEKDAY()
など)は何と見なされますか?
Googleはあなたの友達です。 「mysql routine function procedure」の最初の一致は次のとおりです。 http://dev.mysql.com/doc/refman/5.0/en/stored-routines-syntax.html
簡単な要約:
ストアドルーチンは、プロシージャまたは関数のいずれかです。
プロシージャはCALLステートメントを使用して呼び出され、出力変数を使用してのみ値を返すことができます。
関数は、他の関数と同様にステートメント内から呼び出すことができ、スカラー値を返すことができます。
ここで、関数と手順の違いを要約しようとしました。
SELECT func_name FROM DUAL
などのSQLステートメントによって直接呼び出すことができますが、プロシージャはできません。MySQL関数とmysqlプロシージャの違い
MYSQL関数
値を返す必要があります。
IN
、OUT
、およびINOUT
は関数では使用できません。ただし、関数を作成するときは、戻り値のデータ型を宣言する必要があります。関数は、SQLステートメントから呼び出すことができます。関数は1つの値を返します。
MYSQLプロシージャ
戻り値は必須ではありませんが、OUTパラメータを使用してプロシージャを返すことができます。
IN
を使用できます|OUT
|INOUT
パラメーター。 SQLステートメントからプロシージャーを呼び出すことはできません。プロシージャは、OUT
またはINOUT
パラメータを使用して複数の値を返します。
手順と機能
1. PROCEDURES may or may not return a value but FUNCTION must return a value 2. PROCEDURES can have input/output parameter but FUNCTION only has input parameter. 3. We can call FUNCTION from PROCEDURES but cannot call PROCEDURES from a function. 4. We cannot use PROCEDURES in SQL statement like SELECT, INSERT, UPDATE, DELETE, MERGE etc. but we can use them with FUNCTION. 5. We can use try-catch exception handling in PROCEDURES but we cannot do that in FUNCTION. 6. We can use transaction in PROCEDURES but it is not possible in FUNCTION.
関数は値を返す必要がありますが、ストアドプロシージャではオプションです(プロシージャは0またはn値を返すことができます)。関数は入力パラメータのみを持つことができますが、プロシージャは入力/出力パラメータを持つことができます。関数はプロシージャから呼び出すことができますが、プロシージャは関数から呼び出すことはできません。