什么是存储过程
存储过程(Stored Procedure)是在大型[数据库系统]中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。
为什么使用存储过程
- 简单
通过把处理封装在容易使用的单元中,简化复杂的操作 - 安全
通过存储过程限制对基础数据的访问减少了数据讹误(无意识的或别的原因所导致的数据讹误)的机会。 - 高性能
因为使用存储过程比使用单独的SQL语句要快。存储过程编译过。
缺点也是有的 - 编写存储过程需要更高的技巧
- 可能没有权限创建存储过程
怎样使用存储过程
创建存储过程
CREATE PROCEDURE productpricing()
BEGIN
SELECT Avg(pro_price) AS priceaverage
FROM products;
END
执行存储过程(调用)
CALL productpricing();
删除存储过程
DROP PROCEDURE productpricing;
没有括号,只给出存储过程名。如果指定的存储过程不存在,删除会产生一个错误,可以使用
DROP PROCEDURE IF EXISTS;
使用参数
CREATE PROCEDURE productpricing(
OUT pl DECIMAL(8,2),
OUT ph DECIMAL(8,2),
OUT pa DECIMAL(8,2)
)
BEGIN
SELECT Min(prod_price)
INTO pl FROM products;
SELECT Max(prod_price)
INTO ph
FROM products;
SELECT Avg(prod_price)
INTO pa
FROM products;
END
调用
productpricing(@pricehigh,
@pricelow,
@priceavarage);
变量名 所有MySQL变量都必须以@开始
显示变量
SELECT @pricehigh
SELECT @pricehigh, @pricelow, @priceavarage
使用IN和OUT参数
建立智能存储过程
CREATE PROCEDURE ordertotal(
IN onumber INT,
IN taxable BOOLEAN,
OUT ototal DECIMAL(8,2)
)COMMENT 'Obtain order total, optionally adding tax'
BEGIN
--Declare variable fpr
END
前置--注释
Declare 语句声明局部变量
IF语句判断是否为真
检查存储过程
为了获得包括何时、由谁创建等详细信息的存储过程列表,使用SHOW PROCEDURE STATUS
网友评论