CREATE PROCEDURE proc_name ([IN/OUT/INOUT] parameter type)
BEGIN
-- 宣告區(必須在所有執行語句之前)
DECLARE variable_name type [DEFAULT value];
-- 程序本體
IF condition THEN
-- statements
ELSE
-- statements
END IF;
-- SQL 語句
INSERT INTO tb (name) VALUES (variable);
END
PROCE1() = proce1())模式(IN/OUT/INOUT) + 名稱 + 型別IN(預設)= 輸入;OUT = 輸出;INOUT = 雙向程序內部以分號結束語句,定義前必須變更分隔符:
mysql> DELIMITER //
-- 建立程序...
CREATE PROCEDURE ...
BEGIN
...
END;
//
mysql> DELIMITER ;
DROP PROCEDURE [IF EXISTS] proc_name;
mysql -u用戶 -p密碼DELIMITER //USE db_nameCALL proc_name(params);
-- 建表
USE test;
CREATE TABLE user(
id MEDIUMINT(8) UNSIGNED NOT NULL AUTO_INCREMENT,
name CHAR(15) NOT NULL DEFAULT '',
pass CHAR(32) NOT NULL DEFAULT '',
note TEXT NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB CHARSET=utf8;
-- 程序
DELIMITER //
CREATE PROCEDURE proc_name (IN parameter INT)
BEGIN
IF parameter = 0 THEN
SELECT * FROM user ORDER BY id ASC;
ELSE
SELECT * FROM user ORDER BY id DESC;
END IF;
END;
//
DELIMITER ;
-- 測試
CALL proc_name(1);
CALL proc_name(0);
DROP PROCEDURE IF EXISTS proc_name;
DELIMITER //
CREATE PROCEDURE proc_name (IN parameter INT)
BEGIN
DECLARE variable VARCHAR(20);
IF parameter = 1 THEN
SET variable = 'Windows';
ELSE
SET variable = 'Linux';
END IF;
SELECT parameter;
END;
//
DELIMITER ;
CALL proc_name(1);
CALL proc_name(0);
WHILE、REPEAT、LOOPDECLARE HANDLERSTART TRANSACTION/COMMIT/ROLLBACK