存储过程
在使用SQL过程中,经常会有一些复杂的操作需要多条语句才能完成
- 存储过程:为以后使用而保存的一条或多条SQL语句
- 可以将其视为批文件,虽然他们的作用不仅限于批处理
使用存储过程
执行存储过程
CALL
接受存储过程的名字以及需要传递给它的任意参数存储过程可以显示结果,也可以不显示结果
所有MySQL变量都必须以
@
开始
创建存储过程
-- 一个返回产品平均价格的存储过程
CREATE PROCEDURE productpricing()
BEGIN
SELECT Avg(prod_price) as priceaverage
FROM products;
END;
()
中列出
删除存储过程
使用参数
- 一般来说,存储过程并不现实结果,而是把结果返回给你指定的变量
- 示例:
- 解析
OUT
:指出相应的参数用来存储过程传出的一个值(返回给调用者)IN
:传递给存储过程INOUT
:对存储过程传入和传出- 存储过程的代码位于
BEGIN
与END
之间 INTO
:保存到相应的变量(为变量赋值)
建立智能存储过程
- 示例
create procedure ordertotal( in onumber int, in taxable BOOLEAN, out ototal DECIMAL(8,2) )COMMENT 'Obtain order total, optionally adding tax' begin declare total decimal(8,2); declare taxrate decimal(8,2); select sum(item_price*quantity) from orderitems where order_num = onumber into total; if taxable then select total+(total/100*taxtate) into total; end if; select total into ototal; end;
- 解析:
DECLARE
语句定义局部变量,要求指定变量名和数据类型DECLARE variablenaem datatype;
- 同时支持可选默认值
IF THEN|ELSE|ELSEIF
检查存储过程
SHOW CREATE PROCEDURE procedure_name
:用来显示创建一个存储过程的CREATE
语句SHOW PRECEDURE STATUS
:获得包括何时、由谁创建等详细信息的存储过程列表