Mysql存储过程

参考https://www.cnblogs.com/l5580/p/5993238.html

一、创建存储过程

create procedure procedure_name(参数)            --  如果存储过程需要接受参数,可以在()中列举出来。即使没有参数后面仍然要跟()。BEGIN和END语句用来限定存储过程体,过程体本身是个简单的SELECT语句这里可以输入多个参数,每个参数以逗号分隔。

begin

     sql;                 --注意:写完sql后需要写分号 ,不然会报错

end

例子:

已知数据a中存在课程表和成绩表

创建一个存储过程,根据输入的学号(s_id)及课程名称(c_name),查询某个学生某门课程的成绩


CREATE PROCEDURE getStudentCore(IN sno VARCHAR(20),IN cName VARCHAR(20),OUT sScore INT)
BEGIN
 select score.s_score
 INTO sScore 
 from   course LEFT JOIN score
 on  course.c_id=score.c_id
 where score.s_id=sno  AND course.c_name=cName;
END

其中

关键字OUT指出相应的参数用来从存储过程传给一个值(返回给调用者)。MySQL支持IN(传递给存储过程)、OUT(从存储过程中传出、如这里所用)和INOUT(对存储过程传入和传出)类型的参数。存储过程的代码位于BEGIN和END语句内,如前所见,它们是一些列SELECT语句,用来检索值,然后保存到相应的变量(通过INTO关键字)

二、执行存储过程

call procedure_name(对应存储过程的参数...)  // MySQL称存储过程的执行为调用,因此MySQL执行存储过程的语句为CALL

例子

查看学号为03,课程名为yumen的成绩。

CALL getStudentCore('03','yuwen',@c); --这里执行存储过程后不会输出结果,所以还需要select 变量,查看得到的变量值。

目前存在问题,若课程名称输入的是中文,如'数学',则无法正确查看到该课程成绩,结果都是NULL,待排查
 
SELECT @c

 

三、删除存储过程

drop procedure procedure_name

如 drop PROCEDURE getStudentCore     //删除存储过程

查看数据库中存储过程的创建情况

 show  PROCEDURE status;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值