mysql数据库存储过程讲解与实例_MySQL数据库存储过程讲解与实例

存储过程是数据库的一个重要的功能,MySQL 5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣。好在MySQL 5.0开始支持存储过程,这样即可以大大提高数据库的处理速度,同时也可以提高数据库编程的灵活性。

MySQL存储过程的创建

语法

CREATE PROCEDURE  过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 ...] 过程体

DELIMITER //

CREATE PROCEDURE myproc(OUT s int)

BEGIN

SELECT COUNT(*) INTO s FROM students;

END

//

DELIMITER ;

MySQL默认以";"为分隔符,如果没有声明分割符,则编译器会把存储过程当成SQL语句进行处理,因此编译过程会报错,所以要事先用“DELIMITER //”声明当前段分隔符,让编译器把两个"//"之间的内容当做存储过程的代码,不会执行这些代码;“DELIMITER ;”的意为把分隔符还原。

参数

存储过程根据需要可能会有输入、输出、输入输出参数,如果有多个参数用","分割开。MySQL存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT:

IN参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值OUT:该值可在存储过程内部被改变,并可返回INOUT:调用时指定,并且可被改变和返回

过程体

过程体的开始与结束使用BEGIN与END进行标识。

MySQL实例与讲解

1. 创建一存储过程,求l+2+3+…+n,并打印结果。

先使用MySQL语句创建存储过程,再使用call语句调用这一存储过程查看结果,可以看到由于未输入n的值,sum结果为0。

DELIMITER //

CREATE PROCEDURE addresult()

BEGIN

DECLARE i INT;

DECLARE sum INT;

DECLARE n INT;

SET i = 1;

SET sum = 0;

WHILE i <= n DO

SET sum = sum + i;

SET i = i + 1;

END WHILE;

SELECT SUM;

END

//

DELIMITER ;

在navicat 实现

a43a70ca2810f8bee5d297892910388a.png

b81e147635614556e341b2488667939e.png

2.调用上面的addresult存储过程,打印l十2+3+…+10的结果。

在第一题的addresult过程基础上,加上一条“set n=10”语句,设定n的值,调用该过程后打印结果,可以看到结果为sum=1+2+3+...+10=55。

a1a0e72f4205b6bbcb7d04fdb521884b.png

6deea95eba59432c867633a01b89cc03.png

3. 修改上述存储过程为addresult1,使得n为输入参数,其具体值由用户调用此存储过程时指定。

fa7f6be02cf99a84ee4328ee850944d1.png

3e33a57291d044c1323bdc035f24a7ae.png

c86a63edec22ca825c8f69a067ff32e7.png

这是输入10的结果

4.调用上面修改后的addresult1存储过程,打印l+2+3+…+100的结果。

ab98634a045830bb82c08983a2e01113.png

5. 修改上述存储过程为addresult2,将n参数设定默认值为100,并改设sum为输出参数,让主程序能够接收计算结果。

将3中存储过程中的“in n int”修改为“out sum int”,并在存储过程中设定n默认值为100。

3bd03afd83e14d4b953cb939f4fb42e0.png

dbebbab6a55d78f5e9fe469efaaca431.png

364654dfd4513a720bd175f17959f4ba.png

更多后续参考

参考:https://blog.csdn.net/weixin_41177699/article/details/80553643?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.control

简单易懂参考

https://blog.csdn.net/xushouwei/article/details/52198065

标签:存储,数据库,DELIMITER,实例,参数,MySQL,过程,sum

来源: https://www.cnblogs.com/kle-cola/p/14019763.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值