首页 > 其他分享 >16)创建存储过程

16)创建存储过程

时间:2023-06-01 19:11:05浏览次数:35  
标签:存储 16 创建 stu num choose proc select

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、函数中的函数体不能使用事务控制语句;

标签:存储,16,创建,stu,num,choose,proc,select
From: https://www.cnblogs.com/xuan01/p/17449612.html

相关文章

  • JS逆向实战16——猿人学第20题 新年挑战-wasm进阶
    声明本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!网站https://match.yuanrenxue.cn/match/20网站分析首先进去网站,我们查看下接口发现有两个值是改变......
  • Java中将网上的png,jpg等存储在图片服务器中并且转成pdf,并且返回相应的url地址。
    通常在开发的时候,我们会遇到图片上传的功能,特别是有很多是提供url地址的方式。所以需要提供一个将url的图片等存储起来,然后提供一个我们自己的地址给用户使用。第一步:提供pdfbox的jar包。准备相应的maven    <dependency><groupId>org.apache.pdfbox</groupId......
  • SQLserver 与mysql中的varchar()类型关于存储汉字的个数;字符与字节的区别
    https://blog.csdn.net/qq_64314976/article/details/128604141https://www.cnblogs.com/chenmingjun/p/8118083.html今天遇到一个问题,mysql中的汉字,插入到sqlserver中报错,两边字段大小都是varchar(18)。汉字个数超过了9个,所以在SQLserver中报错我可以理解,因为1个汉字占用2个......
  • 业务安全情报第16期 | 大促8成优惠券竟被“羊毛党”抢走!?
    近期,某电商小程序举办美食节营销活动,提供高额折扣券,并允许用户进行秒杀。然而,羊毛党团伙利用作弊手段,抢购囤券,然后倒卖变现,严重损害了商家的利益。八成秒杀账户是羊毛党根据顶象防御云编号为BSI-2023-rutq业务安全情报发现,某电商平台为吸引人气和促进销售推,推出高额折扣券福利......
  • 2016-05-05就加入博客园的我,直到23年5月才开始真正的学习编程
    去年从工作4年的上家公司离职后,发现自己连工作都找不到,浑浑噩噩一点点把手里的钱全部用完了,发现自己一无所有,看着2016第一篇随笔上的加油,是多么的讽刺开始后悔,开始回忆自己的过往,想起初中时对游戏外挂的幻想,想起高二的那一天找到了脚本之家,找到了一本编程的书籍,写了人生中第一个C......
  • 存储过程
    新建带参数存储过程CREATEPROCEDURE[dbo].[UpdateMeetingConfigDate]( @MeetingCodeNVARCHAR(200))ASBEGINDECLARE@MeetingSnUNIQUEIDENTIFIER--定义一个参数开会SnSELECT@MeetingSn=Sn,@StartDate=StartDate,@MeetingStartTime=MeetingStartTime,@MeetingEndTi......
  • 创建字典进行字段匹配
     --查询varpostNumFiled=Static_Dic.RoleType_PostNum.FirstOrDefault(o=>o.Key==roleType).Value; --封装匹配的字典publicstaticDictionary<int,string>RoleType_PostNum{get{Dictionary<int,string&g......
  • 哪款记事本可以在云端存储?云端记事本APP
    随着智能手机的发展,现在我们出门别的都可以不带,但是不带手机就没有安全感。此外目前越来越多的需求都可以在手机上解决了,例如之前想要记录事情就需要使用纸质的便签纸、记事本或笔记本来记录,但是现在直接在手机记事本APP中就能够随手记录文字、图片等内容了。   不过随着......
  • day16 Python下的三元运算符
    Python下的三元运算符【一】引言三元表达式(三目运算符)能够简洁我们的代码三元表达式其实是将if...else...判断语句的简化表达,代替很多ifelse和if-else一样,只有一个表达式会被执行。因此,三元表达式中的if和else可以包含大量的计算,但只有True的分支会被执行在Java、C......
  • aws 创建s3
    创建s3上传文件访问资源CloudFront创建CloudFrontcnameIAM创建s3用户 设置安全凭证访问密钥控制台登录s3权限策略AmazonS3Smartdao-imgAccess{"Version":"2012-10-17","Statement":[{"Sid"......