创建存储过程
创新互联是一家专注于成都网站建设、网站制作与策划设计,安泽网站建设哪家好?创新互联做网站,专注于网站建设十载,网设计领域的专业建站公司;建站业务涵盖:安泽等地区。安泽做网站价格咨询:18982081108
CREATE PROCEDURE 存储过程名()
一个例子说明:一个返回产品平均价格的存储过程如下代码:
CREATE PROCEDURE productpricing()
BEGIN
SELECT Avg(prod_price) AS priceaverage
FROM products;
END;
//创建存储过程名为productpricing,如果存储过程需要接受参数,可以在()中列举出来。即使没有参数后面仍然要跟()。BEGIN和END语句用来限定存储过程体,过程体本身是个简单的SELECT语句
上一节存储过程封装的都是简单的select语句,直接使用被封装的语句就能完成。所以存储过程往往应用于更复杂的业务规则处理时更有效
看一个例子
这个例子使用元素比较多,解释一下:
COMMENT为表添加了一句注释;
-- 单行注释,注释跟在后面的内容,需要注意-- 后需要加一个空格才能生效;
(#注释内容 /*注释内容*/ 这两种方法也能进行注释)
Declare用来声明变量,一句declare只能声明一个变量,变量必须先声明后使用
If...Then是进行条件判断的,基本语句如下:
If ... Then ... Else ... End If;
这个存储过程完成了订单合计,并判断该订单是否需要增加营业税。taxable是一个布尔值(如果要增税为真,否则为假)。在存储体中定义了两个局部变量。并将结果存储到局部变量total中。if语句检查taxable是否为真,如果为真,则用另一条select语句增加营业税。最后将total结果保存到ototal中。
调用结果如下:
检查存储过程
SHOW CREATE PROCEDURE 过程名;
为了获得包括何时、由谁创建等详细信息的存储过程列表,使用
Show procedure status; -- 会列出所有存储过程
可以添加过滤,比如
存储过程循环语句
1. while
WHILE (表达式) DO
...
END WHILE;
看一个例子
创建了一个循环存储过程,重复向human插入5条记录。下面调用看一下结果
2.repeat
基本语句:
Repeat ...until 条件...END Repeat;
同样操作,使用repeat执行如下
. 关于MySQL的存储过程
存储过程是数据库存储的一个重要的功能,但是MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣。好在MySQL 5.0终于开始已经支持存储过程,这样即可以大大提高数据库的处理速度,同时也可以提高数据库编程的灵活性。
MySQL存储过程的创建
(1). 格式
MySQL存储过程创建的格式:CREATE PROCEDURE 过程名 ([过程参数[,...]])
[特性 ...] 过程体
这里先举个例子:
mysql DELIMITER //
mysql CREATE PROCEDURE proc1(OUT s int)
- BEGIN
- SELECT COUNT(*) INTO s FROM user;
- END
- //
mysql DELIMITER ;
注:
(1)这里需要注意的是DELIMITER //和DELIMITER ;两句,DELIMITER是分割符的意思,因为MySQL默认以";"为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将";"当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原。
(2)存储过程根据需要可能会有输入、输出、输入输出参数,这里有一个输出参数s,类型是int型,如果有多个参数用","分割开。
(3)过程体的开始与结束使用BEGIN与END进行标识。