MySQL储存过程的基本操作

定义具有参数属性的存储过程。创建名为insrectos的存储过程,该存储过程的功能是从student表中根据学号查询某一学生的姓名和年龄并返回。执行该存储过程。

1、定义储存过程:

delimiter //
drop procedure if exists insrectos; 
create procedure insrectos (in sn int,out age int,out student_name varchar(10))
begin 
    select sage,sname 
    into age,student_name 
    from student
    where sno = sn;
end//

然后,可以看到,上面的过程中,delimiter是建立了一个储存过程的语段,后面的“//”。Delimiter类似于一种解释器,其中,默认的情况下为”;”,所以,改为“//”,之后,会对之后的”;”不采取执行作用,直到遇到了下一个”//”,才会执行上面的代码,也就是说上面的代码中,只有在全部打完之后,才会被执行,这个就是分隔符的用法了。
另外,关于储存过程,其中in和out分别对应着传入参数和传出参数,所以,需要通过这些来定义变量名和变量类型。在里面的话,有着begin和end来区分开选择条件,将选好的变量值赋值给我们设定的传出得参数的值,这样的话,就可以传输参数了。
储存过程定义完之后,需要的就是调用了。

2、调用储存过程:

delimiter ;
set @age = 1, @sno = 2005003,@student_name = 1;
call insrectos (@sno,@age,@student_name);
select @student_name,@age;

其中delimiter是将后面的”;”作为分隔符,所以,后面的话,是每一句话都写完就执行的。所以,需要知道的就是这些是将之前的改回来了,变为正常的编辑器可以识别的类型了。在调用的时候,需要传入数据,就算是输出的数据也需要设定好变量名称,传入到存储过程中。因此,在后面得到需要的值的时候,才可以很方便的得到对应的结果。

3、实验结果:

从student表中随便找一个人可以看下结果如何:


上面的代码中,输入的是学号为2005003,所以,输出应该是“利民”“20”,和student的表格中的结果是一致的,所以,结果是正确的。

4、完整代码

delimiter //
drop procedure if exists insrectos; 
create procedure insrectos (in sn int,out age int,out student_name varchar(10))
begin 
    select sage,sname 
    into age,student_name 
    from student
    where sno = sn;
end//
delimiter ;
set @age = 1, @sno = 2005003,@student_name = 1;
call insrectos (@sno,@age,@student_name);
select @student_name,@age;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值