存储过程

存储过程和函数:类似java中的方法,
好处:

  1. 提高代码的重用性
  2. 简化操作
  3. 减少了编译次数并且减少了数据库服务器的连接次数,提高了效率

存储过程

含义:一组预先编译好的SQL语句的集合,理解成批处理语句

创建

CREATE PROCEDURE 存储过程名(参数列表)
BEGIN
END

注意:

  1. 参数列表包含:参数模式 参数名 参数类型
    IN stuname VARCHAR(20)
    参数模式:
    IN:需要调用方输入值
    OUT :该参数可以作为返回值
    INOUT:该参数既可以作为输入,也可以作为输出
  2. 如果存储过程只有一句话,BEGIN END可以省略。每条SQL语句结尾必须加分号。
    语句分隔符的设置:DELIMITER 分隔符 ,则存储过程结束时使用END 分隔符。恢复为原来的语句分隔符:DELIMITER ;

调用

CALL 存储过程名(实参列表);

删除

  1. DROP PROCEDURE 存储过程名;
  2. 仅当存在时删除:DROP PROCEDURE IF EXISTS;

举例

先建了个表

NEW TABLE product(
prod_name VARCHAR(20),
prod_price INT);

插入数据

INSERT INTO product VALUES('玩具车',200);
INSERT INTO product VALUES('飞机模型',800);
INSERT INTO product VALUES('拼图',60);

创建存储过程(注意!MySQL一定要用 DELIMITER 修改分隔符,不然报错!)

DELIMITER //
CREATE PROCEDURE productpricing(
OUT pl DECIMAL(8,2),--DECIMAL十进制小数
OUT ph DECIMAL(8,2),
OUT pa DECIMAL(8,2),
)
BEGIN
	SELECT MIN(prod_price)
	INTO pl--INTO代表保存到的变量
	FROM products;
	SELECT MAX(prod_price)
	INTO ph
	FROM products;
	SELECT AVG(prod_price)
	INTO pa
	FROM products;
END//
DELIMITER ;--还原分隔符

调用存储过程(这条语句并不显示任何变量)

CALL productpricing(
	@pricelow,--所有MySQL变量必须以@开始
	@pricehigh,
	@priceaverage);

检索得到的变量

SELECT @pricehigh,@pricelow,@priceaverage;

在这里插入图片描述

检查存储过程

  • 显示创造存储过程的语句:
    SHOW CREATE PROCEDURE 存储过程名;
  • 显示何时、何人创建等详细信息:
    SHOW CREATE PROCEDURE STATUS LIKE '存储过程名';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值