[Mysql] 2.存储过程练习

存储过程实验

一、实验要求:

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)

猜你喜欢

转载自blog.csdn.net/Edward_is_1ncredible/article/details/80995307