Mysql:存储过程练习

create table stu(

id int(3) primary key auto_increment,

name varchar(20) not null,

grade float,

gender char(2));

insert into stu(name,grade,gender) values('tom',60,'男'),('jack',70,'男'),('rose',90,'女'),('lucy',100,'女');

select * from stu;

#1.创建一个不带参数的存储过程p1并调用,功能:查询stu表中所有男生的信息。

drop procedure if exists p1;

delimiter //

create procedure p1()

begin

SELECT * FROM stu WHERE gender = '男';

end //

delimiter ;

call p1();

#2.创建一个带参数的存储过程p2并调用。功能:根据二个学生的学号从数据表中获取他们的grade数据并进行比较,并返回比较的结果(用二个输入参数,一个输出参数)。

drop procedure if exists p2;

delimiter //

create procedure p2(in id1 int(3),in id2 int(3),out num varchar(10))

begin

declare grade1 float;

declare grade2 float;

select grade into grade1 from stu where id=id1;

select grade into grade2 from stu where id=id2;

if grade1>grade2 then

set num='大于';

elseif grade1=grade2 then

set num='相等';

else

set num='小于';

end if;

end //

delimiter ;

call p2(1,2,@num);

select @num;

#3. 创建一个交换二个整数的存储过程p3并调用(用二个INOUT参数存放交换的二个数)。

drop procedure if exists p3;

delimiter //

create procedure p3(inout num1 int,inout num2 int)

begin

declare temp int;

set temp=num1;

set num1=num2;

set num2=temp;

end //

delimiter ;

set @num1=19;

set @num2=20;

call p3(@num1,@num2);

select @num1,@num2;

相关推荐
切糕师学AI4 分钟前
HBase:一文搞懂分布式宽列数据库(原理 + 架构 + 实战)
数据库·分布式·nosql·hbase·分布式宽列数据库·wide column db
competes8 分钟前
慈善基金投资底层逻辑应用 顶层代码低代码配置平台开发结构方式数据存储模块
java·开发语言·数据库·windows·sql
qq_3729069338 分钟前
如何在 Vuetify 中可靠捕获 Chip 关闭事件(包括键盘触发)
jvm·数据库·python
lcj092466641 分钟前
磁控U位管理系统与DCIM对接实现:筑牢数据中心精细化运维底座
大数据·数据库·人工智能
独自归家的兔1 小时前
OCPP 1.6 协议详解:StatusNotification 状态通知指令
开发语言·数据库·spring boot·物联网
qq_372154232 小时前
SQL嵌套查询中常见报错排查_语法与权限处理
jvm·数据库·python
0xDevNull2 小时前
MySQL 别名(Alias)指南:从入门到避坑
java·数据库·sql
2401_887724503 小时前
CSS如何设置文字溢出显示省略号_利用text-overflowellipsis
jvm·数据库·python
m0_747854523 小时前
golang如何实现应用启动耗时分析_golang应用启动耗时分析实现思路
jvm·数据库·python
雪碧聊技术3 小时前
下午题_试题二
数据库