MySQL 5.1 リファレンスマニュアル :: 17 ストアドプロシージャとファンクション :: 17.2 ストアドルーチン構文
« 17.1 ストアドルーチンとグラントテーブル

17.2.1 CREATE PROCEDUREおよびCREATE FUNCTION 構文 »
Section Navigation      [Toggle]
  • 17 ストアドプロシージャとファンクション
  • 17.1 ストアドルーチンとグラントテーブル
  • 17.2 ストアドルーチン構文
    • 17.2.1 CREATE PROCEDUREおよびCREATE FUNCTION 構文
    • 17.2.2 ALTER PROCEDURE および ALTER FUNCTION 構文
    • 17.2.3 DROP PROCEDURE および DROP FUNCTION 構文
    • 17.2.4 CALLステートメント構文
    • 17.2.5 BEGIN ... END 複合ステートメント構文
    • 17.2.6 DECLAREステートメント用構文
    • 17.2.7 ストアドルーチン内の変数
    • 17.2.8 条件とハンドラ
    • 17.2.9 カーソル
    • 17.2.10 フローコントロール・コンストラクト
  • 17.3 ストアドプロシージャ、ファンクション、トリガ並びにLAST_INSERT_ID()
  • 17.4 ストアドルーチンとトリガのバイナリログ

17.2. ストアドルーチン構文

[+/-]

17.2.1. CREATE PROCEDUREおよびCREATE FUNCTION 構文
17.2.2. ALTER PROCEDURE および ALTER FUNCTION 構文
17.2.3. DROP PROCEDURE および DROP FUNCTION 構文
17.2.4. CALLステートメント構文
17.2.5. BEGIN ... END 複合ステートメント構文
17.2.6. DECLAREステートメント用構文
17.2.7. ストアドルーチン内の変数
17.2.8. 条件とハンドラ
17.2.9. カーソル
17.2.10. フローコントロール・コンストラクト

ストアドルーチンはプロシージャかファンクションのいずれかです。ストアドルーチンはCREATE PROCEDUREおよびCREATE FUNCTIONステートメントを使って作成されます。プロシージャはCALLステートメントを使って起動し、アウトプット変数を使ってのみ値を返すことができます。関数(ファンクション)は(関数名を呼び出す方法を採用している)他の関数のように、ステートメントの内側から呼び出して、スカラー値を返すことができます。ストアドルーチンは他のストアドルーチンを呼び出すことができます。

ストアドプロシージャもしくはファンクションは特定データベースに関連します。これは複数の意味を含んでいます。

  • ルーチンを呼び出すと、必然的に USE db_nameが実行されます(ルーチンの実行が終了すると停止します)。ストアドルーチンの中でUSEステートメントの使用は禁止されています。

  • データベース名を使ってルーチン名を認定することができます。これは現在データベース中に含まれていないルーチンを参照するのに使用することができます。例えば、testデータベースに関連するストアドプロシージャ p またはファンクション f を呼び出すため、CALL test.p()またはtest.f() とするとができます。

  • データベースを撤去すると、それに関連する一切のストアドルーチンも撤去されます。

MySQLは、ストアドプロシージャの中に含まれるレギュラーSELECTステートメントの(カーソルまたはローカル変数なしで)の使用を可能にする非常に有用な拡張機能をサポートしています。このようなクエリーに対する結果セットは、簡単に直接クライアントに送られます。複数のSELECTステートメントは複数の結果セットを生成するので、クライアントは複数の結果セットをサポートしているMySQLクライアント・ライブラリーを使用しなければなりません。これは、クライアントは少なくとも4.1より新しいバージョンのMySQLから取得したクライアント・ライブラリーを使用しなければならないことを意味します。クライアントは接続時、CLIENT_MULTI_RESULTSオプションも特定しなければなりません。Cプログラムに対しては、mysql_real_connect()C API関数を使って実施することができます。項23.2.3.52. 「mysql_real_connect()」、項23.2.9. 「マルチプルステートメントを実行するC APIハンドリング」 を参照して下さい。

以下のセクションでは、ストアドプロシージャとファンクションを生成、変更、並びに起動を実行するのに使用する構文について説明します。

Copyright © 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates