2015-10-24
目录
例1:管理员工的存储过程定义
delimiter // CREATE PROCEDURE employee_add(p_name char(64),p_email char(64),p_password char(64)) MODIFIES SQL DATA BEGIN DECLARE l_pass char(64); SET l_pass = PASSWORD(p_password); INSERT INTO employee(name,email,password) VALUES(p_name,p_email,l_pass); END // CREATE PROCEDURE employee_passwd(p_email char(64),p_password char(64)) MODIFIES SQL DATA BEGIN DECLARE l_pass char(64); SET l_pass = PASSWORD(p_password); UPDATE employee SET `password` = l_pass WHERE email = p_email; END // CREATE PROCEDURE employee_del(p_name char(64)) MODIFIES SQL DATA BEGIN DELETE FROM employee WHERE name = p_name; END // delimiter ;
例2:调用存储过程
CALL employee_add('chuck','chuck@example.com','abrakadabra');
例3:获取员工姓名的存储函数
delimiter // CREATE FUNCTION employee_email(p_name char(64)) RETURNS char(64) DETERMINISTIC BEGIN DECLARE l_email char(64); SELECT email INTO l_email FROM employee WHERE name = p_name; RETURN l_email; END // delimiter ;
例4:使用存储函数
CREATE TABLE collected (name char(32),email char(64)); INSERT INTO collected(name,email) VALUES('chuck',employee_email('chuck')); SELECT employee_email('chuck');
例5:更新表的存储函数
CREATE TABLE log_msg (log_id int auto_increment PRIMARY key,msg text); delimiter // CREATE FUNCTION log_message(msg text) RETURNS INT DETERMINISTIC BEGIN INSERT INTO log_msg(msg) VALUES(msg); RETURN LAST_INSERT_ID(); END // delimiter ; SELECT log_message('Just a test');
参考资料
[1] 唐汉明.深入浅出MySQL 数据库开发、优化与管理维护(第2版)[M].北京:人民邮电出版社,2014
[2] Schwartz.高性能MySQL(第3版)[M].北京:电子工业出版社,2013
[3] 范德兰斯.MySQL开发者SQL权威指南 [M].北京:机械工业出版社,2008
[4] Forta.MySQL必知必会 [M].北京:人民邮电出版社,2009
[5] Chapter 20 Stored Programs and Views
[6] 第20章:存储程序和函数
[7] MySQL存储过程详解
[8] MySQL存储过程
[10] MySQL 存储过程 常用语法
[11] mysql存储过程详解
[13] MySql存储过程—2、第一个MySql存储过程的建立
[14] MySql存储过程—3、变量
[15] MySql存储过程—4、参数
[17] MySql存储过程—6、循环
[19] MySql存储过程—8、条件处理(Condition Handling) / 错误、异常处理
[20] mysql存储过程详细教程
[21] Mysql 存储过程基本语法
[22] MySQL 存储过程的基本用法介绍