数据库——存储过程
程序员文章站
2022-06-02 08:21:59
...
什么是存储过程
存储过程(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
上一篇: 秦始皇究竟是谁的儿子?史记上是怎么写的?
下一篇: 龙虾怎么储存?教你几个小办法,越放越鲜!