存储过程实验
一、实验要求:
1. 理解存储过程的概念
2. 掌握存储过程的语法格式、使用方法
3. 掌握存储过程的创建、执行
二、实验前提:
Create table student
(
Id varchar(255), #学号
Name varchar(255), #姓名
Roomid varchar(255), #班级
Sex char(1), #性别
Degree varchar(3) #成绩
);
Insert into student values('1','amy','8','0','65');
Insert into student values('2','bob','4','1','80');
Insert into student values('3','candy','6','0','70');
Insert into student values('4','danny','8','1','90');
Insert into student values('5','edward','8','1','95');
Insert into student values('6','frank','7','1','100');
二、实验内容:
实验1:创建一个存储过程,实现查询表student中的记录信息,并执行存储过程
Delimiter //
Create procedure proc1()
begin
select * from student;
End//
Delimiter ;
Call proc1();
实验2:创建一个存储过程,根据给定的学生学号返回该学生的姓名
Delimiter //
CREATE PROCEDURE proc2( IN id int)
BEGIN
SELECT * from student s WHERE s.id=id;
END //
Delimiter ;
Call proc2();
实验3:创建一个存储过程,根据所给的班级的编号,统计该班人数,并将人数以输出变量返回给用户。
Delimiter //
CREATE PROCEDURE proc3( IN roomid int)
BEGIN
SELECT COUNT(*) from student s WHERE s.roomid=roomid;
END
Delimiter ;
CALL proc3(roomid)
实验4:创建一个存储过程,根据所给的学号查询该学生的考试分数是否超过了85分, 若超过则输出“ 考得好”, 否则输出 “考得不好”。
Delimiter //
CREATE PROCEDURE proc4(in id int)
BEGIN
IF (SELECT degree from student s WHERE s.id=id)>85 THEN
SELECT '考得好';
ELSE
SELECT '考得不好';
END IF;
END//
Delimiter ;
CALL proc4(id)
实验5:创建一个存储过程,对表student增加两条记录。
Delimiter //
CREATE PROCEDURE proc5()
BEGIN
INSERT INTO student VALUES('7','geek','6','1','66');
INSERT INTO student VALUES('8','helena','2','0','90');
END//
Delimiter ;
CALL proc5()
实验6:请撰写一个存储过程,输出各班学生的平均成绩。
Delimiter //
CREATE PROCEDURE proc6(in roomid int)
BEGIN
SELECT AVG(degree) from student s WHERE s.roomid=roomid;
END//
Delimiter ;
CALL proc6(roomid)
实验7:请撰写一个存储过程,能根据用户输入的学号,输出学生的姓名、年龄到两个参数变量中,以供其它程序使用。
Delimiter //
CREATE PROCEDURE proc7(IN id INT)
BEGIN
SELECT sex,degree from student s WHERE s.id=id;
END//
Delimiter ;
CALL proc7(id)
实验8:撰写一个存储过程,根据用户输入的学号,输出学生的姓名、年龄两个参数到新表temp中
Create table temp
(
Sex varchar(255),
Degree varchar(255)
);
Delimiter //
CREATE PROCEDURE proc8(IN id INT)
BEGIN
Insert into temp (SELECT sex,degree from student s WHERE s.id=id);
END//
Delimiter ;
CALL proc8(id)
实验9:请撰写一个存储过程,求1+2+3+…x的值。
Delimiter //
Create procedure proc9(in x int)
Begin
Declare i int default 1;
Declare num int default 0;
While i<=x do
Set num=num+i;
Set i=i+1;
End while;
Select num;
End//
Delimiter ;
CALL proc9(x)