MySQL ストアドプロシージャ・ストアドファンクション

ストアドプロシージャ

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

CREATE PROCEDURE プロシージャ名 ()
BEGIN
   SQL 文1;
   SQL 文2;
   .
   .
   .
END //

* 「 ; 」を入力するとコマンドの途中で終了されてしまうため一時的にデリミタ「 ; 」を変更し作成終了時に戻す

-- デリミタを「 ; 」から「 // 」に変更
DELIMITER //

ストアドプロシージャの作成(引数あり)

CREATE PROCEDURE プロシージャ名 (引数名 データ型)
BEGIN
   SQL 文1(WHERE等が含まれる);
   SQL 文2;
   .
   .
   .
END //

ストアドファンクションの作成

CREATE FUNCTION ファンクション名 RETURNS INT
BEGIN
   SQL 文1;
   .
   .
   .
   RETURN 戻り値または式;
END //

変数の宣言

DECLARE 変数名 データ型;

変数への代入

データ INTO 変数名

ストアドプロシージャの実行

CALL プロシージャ名();

CALL プロシージャ名;

ストアドファンクションの実行

SELECT ファンクション名;

作成したストアドプロシージャの内容を確認

SHOW CREATE PROCEDURE プロシージャ名\G

ストアドファンクションの内容を確認

SHOW CREATE FUNCTION ファンクション名\G

ストアドプロシージャの一覧

SHOW PROCEDURE STATUS\G

ストアドファンクションの一覧

SHOW FUNCTION STATUS\G

ストアドプロシージャとストアドファンクションの一覧

SELECT
    ROUTINE_SCHEMA AS 'データベース名',
    ROUTINE_NAME AS '名前',
    ROUTINE_TYPE AS '種類'
FROM
   information_schema.ROUTINES;

ストアドプロシージャの削除

DROP PROCEDURE プロシージャ名;

ストアドファンクションの削除

DROP FUNCTION ファンクション名;