MySQL存储过程入门

来源:互联网 发布:捉握手包软件 编辑:程序博客网 时间:2024/05/16 00:39
存储过程入门实例
日期:2015-10-13,作者:雨水

概述
以MySQL数据库为例,简单介绍下存储过程的创建,执行和删除。

什么是存储过程
存储过程可以理解为可以保存的一条或者多条SQL语句的集合。

为什么要用存储过程
(1) 能够处理比一般SQL更为复杂的操作,而且便于封装;
(2) 简化对变动的管理,而且更安全;
(3) 存储过程比使用单独的SQL语句要快。
存储过程的编写比基本SQL语句复杂,需要更高的技能和丰富的经验。

存储过程的创建
以在mysql>命令行中为例,如下:
mysql> delimiter //
mysql> create procedure avgprice()
    -> begin
    -> select avg (price) as aprice
    -> from products;
    -> end //
mysql> delimiter ;
第一行是定义//为分隔符,最后一行是回复分号作为分隔符。
注意:创建存储过程前需要先用use命令选择对应的数据库,跟创建表之前是一样的。

存储过程的执行
mysql> call avgprice();
+--------+
| aprice |
+--------+
| 3.0000 |
+--------+
1 row in set (0.00 sec) 

删除存储过程
mysql> drop procedure avgprice;

带参数的存储过程
存储过程有三种类型的参数:IN,OUT和INOUT,分别表示输入参数,输出参数和输入输出参数。这里以出参OUT为例。
mysql> delimiter //
mysql> create procedure avgprice(OUT aprice int)
    -> begin
    -> select avg (price) into aprice
    -> from products;
    -> end //
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;
mysql> call avgprice(@aprice);
Query OK, 1 row affected (0.00 sec)

mysql> select @aprice;
+---------+
| @aprice |
+---------+
|       3 |
+---------+
也可以把int类型换成其他的,如decimal等。

以上都是比较简单的存储过程的举例,实际应用的时候都比这复杂得多,还可以包含IF这样的逻辑语句。 这里只是入个门,做培训用,复杂的就不再介绍。

参考资料:
1. http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html
2. <MySQL必知必会>
0 0
原创粉丝点击