【MySQL】【ストアド】ストアドプロシージャ / ストアドファンクション / PREPARE構文

■ ストアドプロシージャ

 * CREATE PROCEDURE を使う

サンプル

定義
delimiter //
CREATE PROCEDURE `give_hello` (OUT result VARCHAR(30))
COMMENT 'Hello World! for stored procedure.'
LANGUAGE SQL
BEGIN
   SELECT COUNT(*) FROM customer INTO result;
END;
//
実行例
CALL give_hello(@value);
SELECT @value;

-- 出力結果
6

変更

DELIMITER //
ALTER PROCEDURE give_hello()
BEGIN
  -- 変更するSQL内容
END;
//

削除

DROP PROCEDURE give_hello;

■ ストアドファンクション

 * CREATE FUNCTION を使う

サンプル

定義
delimiter //
CREATE FUNCTION `say_hello` (your_name VARCHAR(30))
RETURNS VARCHAR(50) DETERMINISTIC
COMMENT 'Hello World! for stored function.'
LANGUAGE SQL
BEGIN
   RETURN CONCAT('Hello, ', your_name, '!');
END;
//
実行例
SELECT say_hello('World');

-- 出力結果
Hello, World!

■ PREPARE 構文

構文

定義
PREPARE 【名前】 FROM 【SQL文】
実行
EXECUTE 【名前】
解放処理
DEALLOCATE PREPARE 【名前】


関連記事

MySQL】イベントスケジューラ

https://blogs.yahoo.co.jp/dk521123/27226901.html

MySQL】トリガー

https://blogs.yahoo.co.jp/dk521123/37433982.html

ストアドプロシージャ / ストアドファンクション ~ 基本編 ~

https://blogs.yahoo.co.jp/dk521123/17141951.html