[+/-]
      ストアドルーチンはプロシージャかファンクションのいずれかです。ストアドルーチンはCREATE
      PROCEDUREおよびCREATE
      FUNCTIONステートメントを使って作成されます。プロシージャはCALLステートメントを使って起動し、アウトプット変数を使ってのみ値を返すことができます。関数(ファンクション)は(関数名を呼び出す方法を採用している)他の関数のように、ステートメントの内側から呼び出して、スカラー値を返すことができます。ストアドルーチンは他のストアドルーチンを呼び出すことができます。
    
ストアドプロシージャもしくはファンクションは特定データベースに関連します。これは複数の意味を含んでいます。
          ルーチンを呼び出すと、必然的に USE
          が実行されます(ルーチンの実行が終了すると停止します)。ストアドルーチンの中でdb_nameUSEステートメントの使用は禁止されています。
        
          データベース名を使ってルーチン名を認定することができます。これは現在データベース中に含まれていないルーチンを参照するのに使用することができます。例えば、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ハンドリング」
      を参照して下さい。
    
以下のセクションでは、ストアドプロシージャとファンクションを生成、変更、並びに起動を実行するのに使用する構文について説明します。

