ホームページ  >  記事  >  データベース  >  mysqlストアドプロシージャの書き方

mysqlストアドプロシージャの書き方

(*-*)浩
(*-*)浩オリジナル
2019-05-17 11:16:5432138ブラウズ

MySQL ストアド プロシージャは、いくつかの SQL ステートメントのコレクションです。たとえば、場合によっては、大規模な一連の SQL ステートメントが必要になる場合や、SQL ステートメントの作成プロセス中にいくつかの変数の値を設定する必要がある場合があります。今度は、ストアド プロシージャを作成することが完全に必要になります。ストアドプロシージャの作成方法を紹介します。

mysqlストアドプロシージャの書き方

構文形式:

CREATE PROCEDURE ステートメントを使用してストアド プロシージャを作成できます。
構文形式は次のとおりです:

CREATE PROCEDURE <过程名> ( [过程参数[,…] ] ) <过程体>
[过程参数[,…] ] 格式
[ IN | OUT | INOUT ] <参数名> <类型>

構文の説明は次のとおりです:

1) プロシージャ名

デフォルトで現在のデータベースに作成されるストアド プロシージャの名前。特定のデータベースにストアド プロシージャを作成する必要がある場合は、名前の前にデータベースの名前 (db_name.sp_name) を付けます。名前には、MySQL 組み込み関数と同じ名前を選択しないように注意してください。そうしないと、エラーが発生します。

2) プロセス パラメーター

ストアド プロシージャのパラメーター リスト。このうち、 はパラメータ名、 はパラメータのタイプ (任意の有効な MySQL データ タイプにすることができます) です。パラメータが複数ある場合は、パラメータリスト内でパラメータをカンマで区切ります。ストアド プロシージャにはパラメータを含めることはできません (この場合、ストアド プロシージャの名前の後にかっこのペアを追加する必要があります)、または 1 つ以上のパラメータを含めることもできます。

MySQL ストアド プロシージャは、入力パラメータ、出力パラメータ、入出力パラメータという 3 種類のパラメータをサポートしており、それぞれ IN、OUT、INOUT の 3 つのキーワードで識別されます。このうち、入力パラメータはストアド プロシージャに渡すことができ、出力パラメータはストアド プロシージャが演算結果を返す必要がある場合に使用され、入出力パラメータは入力パラメータと出力パラメータの両方として機能します。パラメータ名はデータ テーブルの列名と同じであってはいけないことに注意してください。そうでない場合、エラー メッセージは返されませんが、ストアド プロシージャの SQL ステートメントはパラメータ名を列名として扱います。予測不可能な結果。

3) プロシージャ本体

ストアド プロシージャの主要部分 (ストアド プロシージャ本体とも呼ばれます) には、プロシージャの呼び出し時に実行する必要がある SQL ステートメントが含まれています。 。このセクションはキーワード BEGIN で始まり、キーワード END で終わります。ストアド プロシージャ本体に SQL ステートメントが 1 つだけある場合は、BEGIN-END フラグを省略できます。

ストアド プロシージャの作成では、DELIMITER コマンドという非常に重要な MySQL コマンドが頻繁に使用されます。特にコマンド ラインから MySQL データベースを操作するユーザーは、このコマンドの使い方を習得する必要があります。

MySQL では、サーバーが SQL ステートメントを処理するときに、デフォルトでステートメントの終了マークとしてセミコロンが使用されます。ただし、ストアド プロシージャを作成する場合、ストアド プロシージャの本体には複数の SQL ステートメントが含まれる場合があります。これらの SQL ステートメントがステートメントの終了文字としてセミコロンを使用する場合、MySQL サーバーは処理中に最初に検出された SQL ステートメントで終了します。セミコロンが使用されます。プログラム全体のターミネータとして使用すると、ストアド プロシージャ本体の後続の SQL ステートメントは処理されなくなりますが、これは明らかに不可能です。この問題を解決するには、通常、DELIMITER コマンドを使用して、終了コマンドを別の文字に変更します。

構文形式は次のとおりです:

DELIMITER $$

構文の説明は次のとおりです: $$ はユーザー定義のターミネータです。通常、この記号には特殊な記号を使用できます。 、「?」が2つ、「¥」が2つなど。 DELIMITER コマンドを使用する場合、バックスラッシュ「\」文字は MySQL エスケープ文字であるため、使用しないでください。
MySQL コマンド ライン クライアントに次の SQL ステートメントを入力します。

mysql > DELIMITER ??

この SQL ステートメントが正常に実行されると、コマンド、ステートメント、またはプログラムの終了記号は 2 つの疑問符「??」に置き換えられます。

終了記号をデフォルトのセミコロン「;」に戻す場合は、MySQL コマンド ライン クライアントに次のステートメントを入力します:

mysql > DELIMITER ;

注: DELIMITER とセミコロン「;」それらの間にはスペースが必要です。ストアド プロシージャを作成する場合は、CREATE ROUTINE 権限が必要です。 SHOW PROCEDURE STATUS コマンドを使用すると、データベースに存在するストアド プロシージャを表示できます。ストアド プロシージャに関する特定の情報を表示するには、SHOW CREATE PROCEDURE を使用できます。

パラメータなしでストアド プロシージャを作成する

ストアド プロシージャの機能は、学生の成績情報テーブルから学生の成績情報をクエリすることです。入力 SQL ステートメントと実行プロセスは以下のようになります。

rree

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

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