最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

16)创建存储过程-今日热闻

来源:博客园

1、创建存储过程的语法:

create procedure 存储过程名(参数1,参数2,...)begin    存储过程语句块;end;

存储过程有三种类型的参数:

in:默认输入参数;


(资料图片仅供参考)

out:输出参数;

inout:既是输入也是输出参数;

测试:实现一个输入学生号,得出学生选修课数目;

delimiter $$create procedure get_choose_course_num_proc(in stu_no char(11), out stu_num int)begin    select count(*) into stu_num from choose  where student_no=stu_no;end;$$delimiter ;#测试:set @stu_no="2023001";set @stu_num = 0;call get_choose_course_num_proc(@stu_no,@stu_num);select @stu_num;

同样我们也可以直接用:

call get_choose_course_num_proc("2023003",@stu_num);select @stu_num;

当然我们也可以用一个 inout 参数 代替两个参数;

delimiter $$create procedure get_choose_course_num2_proc(inout stu_d int)begin    select count(*) into stu_d from choose where student_no = stu_d;end;$$delimiter ;

测试:

set @stu_d = "2023001";call get_choose_course_num2_proc(@stu_d);select @stu_d;

这里使用一个变量完成;这里传入进去的类型是char型,输出的是int型,因为char型也是可以用int表示;

2、查看储存过程定义:

1)查看所有的存储过程定义:

show procedure status\G

这里截取的一部分,可以看到详细的信息;

2)查看指定的存储过程定义:

show create procedure get_choose_course_num2_proc\G

mysql8.0版本之前还可以:

select name from mysql.proc where db="数据库名" and type = "procedure";

3)删除存储过程:

drop procedure 存储过程名;

总结:函数和存储过程的区别:

1、函数必须有返回类型和返回值,存储过程可以使用out 或 inout 的参数作为返回值;

2、函数内部可以使用select into 语句为变量赋值,返回不能存在有返回结果集的语句,存储过程没有这个限制;

3、函数可以直接在SQL语句或 MySQL 命令中使用,存储过程一般单独调用;

4、函数中的函数体不能使用事务控制语句;

关键词: