本文实例讲述了mysql存储过程用法。分享给大家供大家参考,具体如下:
概述:
简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法;
存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的,且功能比触发器更加强大,触发器是某件事触发后自动调用;
示例
1
2
3
4
5
6
|
DELIMITER //
CREATE PROCEDURE proc ( IN num INT )
BEGIN
SELECT * FROM v9_qd_account limit num;
END //
DELIMITER ;
|
执行:
1
2
|
SET @p_in=5;
CALL proc(@p_in);
|
或者
1
|
CALL proc(5);
|
循环
1
2
3
|
DECLARE num int default 5;
SET num = 1;
SET num = num + 1;
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
DELIMITER //
CREATE PROCEDURE proc( IN sname VARCHAR (20), IN pwd VARCHAR (5), IN qd INT , IN start INT , IN end INT )
begin
DECLARE var INT ;
DECLARE myname VARCHAR (30);
SET var=start;
while var< end do
SET myname = CONCAT(sname,LPAD(var,3, '0' ));
insert into v9_qd_account (storename, password ,qudao,regdate) value(myname,md5(pwd),qd,UNIX_TIMESTAMP());
SET var=var+1;
end while;
end //
DELIMITER ;
|
调用
1
|
CALL proc( 'test' , '123456' ,1,1,21);
|
查看
1
2
3
|
SHOW PROCEDURE STATUS LIKE 'C%' \G; 查看以字母C开头的存储过程
SHOW CREATE PROCEDURE proc \G; 查看状态和创建语句
information_schema.Routines 中查看
|
删除
1
2
|
DROP PROCEDURE IF EXISTS proc;
DROP FUNCTION mytest;
|
点拨
如果参数中有中文可以这样
1
|
CREATE PROCEDURE useInfo( IN u_name VARCHAR (50) character set gbk, OUT u_age INT ) ......
|
希望本文所述对大家MySQL数据库计有所帮助。
原文链接:http://www.cnblogs.com/mr-amazing/p/4626646.html