数据库系统实验8 SQL语言-存储过程基本操作

数据库实验8 SQL语言-存储过程基本操作

一.实验环境:

​ MYSQL WORKBENCH

二.实验内容与完成情况:

(逐题给出相应的SQL语句及执行结果,SQL语句必须能够拷贝,实验结果可截图;题目内容不需抄写)

在之前的实验基础上继续完成,之前实验已经建立有相关的jxgl数据库。

在教学管理系统(jxgl)中完成以下操作:

查看并使用jxgl数据库:

use jxgl;
show tables;

在这里插入图片描述
1.定义具有参数的存储过程。在jxgl数据库中创建一个名称为InsRecToC的存储过程,该存储过程的功能是向course中插入一条新的记录,新记录的值由参数提供,执行该存储过程。

delimiter //
create procedure InsRecToC(in the_cno char(2),in the_cname varchar(20),in the_cpno char(2),in the_ccredit int(11))
Begin
insert into course value(the_cno,the_cname,the_cpno,the_ccredit);
End;

运行完成将看到创建该procedure成功,且在左侧可以看到已存在该procedure;

执行该过程:

call InsRecToC("15","数据库实验",null,1);

执行select语句查看可知插入该数据成功:
在这里插入图片描述

2.创建一个名称为select_s的存储过程,该存储过程的功能是从student表中查询所有女生的信息,并执行该存储过程

delimiter //
create procedure select_s()
Begin
select * from student where ssex="女";
End;

执行该过程:

call select_s();

在这里插入图片描述
3.定义具有参数的存储过程。创建名称为insrectos的存储过程,该存储过程的功能是从student表中根据学号查询某一学生的姓名和年龄并返回。执行该存储过程

delimiter //
create procedure insrectos (in sn char(7),out age int,out the_name varchar(20))
begin 
    select sage,sname into age,the_name 
    from student
    where sno = sn;
end//

调用该存储过程:

delimiter ;
set @age = 0, @sno ="2005002",@the_name = "no_name"; #设初始变量为'2005002',0,'no_name'
call insrectos (@sno,@age,@the_name); #调用存储过程
select @the_name,@age;  #显示the_name和age


4.将存储过程select_s改名为SELECT_STUDENT

//查看官方文档可知现在应该是不再支持sp_rename操作

//故在此我采用了直接再建一个新表内容一致然后将旧表删除的操作

delimiter //
create procedure SELECT_STUDENT()   #创建新表,内容相同,名称不同
Begin
select * from student where ssex="女";
End//
drop procedure select_s;  #删除旧表


5.删除存储过程insrectos

drop procedure if exists insrectos;

可以看到删除成功:

6.查看已建存储过程源程序代码

查看所有的存储过程:

Show procedure status;

在这里插入图片描述
查看特定的存储过程:

show create procedure SELECT_STUDENT;
发布了68 篇原创文章 · 获赞 36 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/dingdingdodo/article/details/103016469