CREATE PROCEDURE ストアドプロシージャ名() BEGIN SQL文1 SQL文2 END
DELIMITER //
★
DELIMITER // CREATE PROCEDURE pr1() BEGIN SELECT * FROM tb; SELECT * FROM tb1; END // DELIMITER ;
CALL ストアドプロシージャ名
CALL pr1;
PROCEDURE ストアドプロシージャ名(引数名 データ型);
★
DELIMITER // CREATE PROCEDURE pr2(d INT) BEGIN SELECT * from tb WHERE uria>=d; END // DELIMITER ; CALL pr2(100); CALL pr2(200);
SHOW CREATE PROCEDURE プロシージャ名;
★
SHOW CREATE PROCEDURE pr1;
DROP PROCEDURE ストアドプロシージャ名;
★
DROP PROCEDURE pr1;
CREATE FUNCTION ストアドファンクション名(引数 データ型) RETURNS 返す値のデータ型 BEGIN SQL文… RETURN 返す値:式 END
★
DELIMITER // CREATE FUNCTION fu1(sintyo INT) RETURNS DOUBLE BEGIN RETURN sintyo * sintyo * 22 / 10000; END // DELIMITER ; SELECT fu1(174);
DECLARE 変数名 データ型
DELIMITER // CREATE FUNCTION fu2() RETURNS DOUBLE BEGIN DECLARE r DOUBLE; SELECT AVG(uria) INTO r FROM tb; RETURN r; END // DELIMITER ; SELECT fu2();
DROP FUNCTION ストアドファンクション名;
SHOW CREATE FUNCTION ストアドファンクション名;
★
SHOW CREATE FUNCTION fu2;
CREATE TRIGGER トリガ名 BEFORE(あるいはAFTER) DELETEなどのコマンド ON テーブル名 FOR EACH ROW BEGIN 更新前(OLD.カラム名)または更新後(NEW.カラム名)を使った処理 END
★
CREATE TABLE tb1M SELECT * FROM tb1; DELIMITER // CREATE TRIGGER tr1 BEFORE DELETE ON tb1 FOR EACH ROW BEGIN INSERT INTO tb1M VALUES(OLD.bang,OLD.nama,OLD.tosi); END // DELIMITER ; DELETE FROM tb1; SELECT * FROM tb1M; INSERT INTO tb1 SELECT * FROM tb1M;
SHOW TRIGGERS;
DROP TRIGGER トリガ名;
★
DROP TRIGGER tr1; SHOW TRIGGERS;
次のテーブル「tb」を利用し、引数「t」(INT型)として月(tuki)の4~6のどれかの値を指定すると、その月の売上(uria)の合計(INT型)を返すストアドファンクション「f_uria」を作成してください。
★
DELIMITER // CREATE FUNCTION f_uria(t INT) RETURNS INT BEGIN DECLARE u INT; SELECT SUM(uria) INTO u FROM tb WHERE tuki=t; RETURN u; END // DELIMITER ; SELECT f_uria(4);