ホームページ >データベース >mysql チュートリアル >MySQL ストアド プロシージャの使用、実行、作成に関するチュートリアル

MySQL ストアド プロシージャの使用、実行、作成に関するチュートリアル

巴扎黑
巴扎黑オリジナル
2017-05-18 11:01:261754ブラウズ

ストアド プロシージャの使用

ストアド プロシージャを使用するには、その実行 (実行) 方法を知っている必要があります。ストアド プロシージャの実行はその定義よりもはるかに頻繁に行われるため、ストアド プロシージャの実行から始めます。次に、ストアド プロシージャの作成と使用について紹介します。 ストアド プロシージャを実行する

MySQL ではストアド プロシージャの実行を呼び出しと呼ぶため、MySQL がストアド プロシージャを実行するために使用するステートメントは CALL です。 CALL は、ストアド プロシージャの名前と、それに渡す必要があるパラメータを受け入れます。次の例を見てください:

入力:

call productpricing(@pricelow,@pricehigh,@priceaverage);

分析: その中で、productpricing という名前のストアド プロシージャが実行され、製品の最小価格、最大価格、平均価格を計算して返します。

後で説明するように、ストアド プロシージャでは結果を表示することも、表示しないこともできます。


ストアド プロシージャの作成

前述したように、ストアド プロシージャの作成は簡単な問題ではありません。このプロセスを理解するために、製品の平均価格を返すストアド プロシージャの例を考えてみましょう。そのコードは次のとおりです:

入力:

create procedure productpricing() begin select avg(prod_price) as priceaverage from products;end;

分析: 最初と最後のステートメントについては後で説明します。このストアド プロシージャは productpricing という名前で、CREATE PROCEDURE productpricing() ステートメントで定義されます。ストアド プロシージャがパラメーターを受け入れる場合、それらは () 内に列挙されます。このストアド プロシージャにはパラメータがありませんが、次の () が必要です。 BEGIN ステートメントと END ステートメントはストアド プロシージャ本体を修飾するために使用されます。ストアド プロシージャ本体自体は (Avg() 関数を使用した) 単なる単純な SELECT ステートメントです。

MySQL がこのコードを処理すると、新しいストアド プロシージャ product-pricing が作成されます。このコードはストアド プロシージャを呼び出さないため、データは返されません。単に後で使用するために作成されるだけです。

mysql コマンド ライン クライアントの区切り文字 mysql コマンド ライン ユーティリティを使用している場合は、この説明を注意深く読む必要があります。

デフォルトの MySQL ステートメント区切り文字は ; です (これまでに使用した MySQL ステートメントですでに見たように)。 mysql コマンド ライン ユーティリティでは、ステートメント区切り文字として ; も使用されます。コマンド ライン ユーティリティがストアド プロシージャ自体内で ; 文字を解釈すると、それらはストアド プロシージャのコンポーネントとして扱われず、ストアド プロシージャ内の SQL で構文エラーが発生します。

解決策は、コマンド ライン ユーティリティのステートメント区切り文字を次のように一時的に変更することです:

delimiter//
create procedure productpricing()
begin
select avg(prod_price) as priceaverage from products;
end  //
delimiter;

ここで、 DELIMITER // は、格納されているフラグに見られるように、 // を新しいステートメント終了区切り文字として使用するようにコマンド ライン ユーティリティに指示します。プロシージャ 終了 END は、END; ではなく END// として定義されます。こうすることで、ストアド プロシージャ本体内の ; はそのまま残り、データベース エンジンに正しく渡されます。最後に、元のステートメント区切り文字に戻すには、 DELIMITER ; を使用します。記号を除く任意の文字をステートメント区切り文字として使用できます。

mysql コマンドライン ユーティリティを使用している場合は、この章を読むときにこの点に留意してください。

それでは、このストアド プロシージャをどのように使用するのでしょうか?以下に示すように:

入力:

call productpricing();

出力:

分析: CALL productpricing(); 作成したばかりのストアド プロシージャを実行し、返された結果を表示します。ストアド プロシージャは実際には関数であるため、ストアド プロシージャ名の後に () 記号が必要です (パラメータが渡されない場合でも)。 MySQL ストアド プロシージャの使用、実行、作成に関するチュートリアル

以上がMySQL ストアド プロシージャの使用、実行、作成に関するチュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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