实验报告四 MYSQL存储过程与触发器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机科学系实验报告

实验要求:

(在导入的教学管理STM数据库中完成):

1、基本储存过程的创建

①创建一存储过程get_student_num,利用输出参数形式获取学生人数信息。并利用CALL调用该存储过程查看结果。

DELIMITER $$

CREATE PROCEDURE `stm`.`get_student_num`(OUT count_num CHAR(10))

BEGIN

SELECT COUNT(sno) INTO count_num FROM student;

END$$

DELIMITER ;

CALL get_student_num(@count_num)

SELECT @count_num

②创建一存储过程get_student_by_sno,通过输入学生编号作为参数,获得该学生的记录信息。并利用CALL调用该存储过程查看结果。

DELIMITER $$

CREATE PROCEDURE `stm`.`get_student_by_sno`(IN sno_in CHAR(10))

BEGIN

SELECT *FROM student WHERE sno = sno_in;

END$$

DELIMITER ;

CALL get_student_by_sno('900262')

③创建一存储过程update_sage_by_sno,通过输入学生编号、年龄作为参数,将指定学生的年龄更改为指定的年龄。并利用CALL调用该存储过程查看结果。

DELIMITER $$

CREATE PROCEDURE `stm`.`update_sage_by_sno`(IN sno_in CHAR(13) ,sage_in INT)

BEGIN

UPDATE student SET sage=sage_in WHERE sno=sno_in;

END$$

DELIMITER ;

CALL update_sage_by_sno('900125',20)

④创建一存储过程delete_student_by_sno,通过输入学生编号作为参数,删除该学生记录。并利用CALL调用该存储过程查看结果。

DELIMITER $$

CREATE PROCEDURE `stm`.`delete_student_by_sno`(IN sno_in CHAR(10))

BEGIN

DELETE FROM student WHERE sno=sno_in;

END$$

DELIMITER ;

CALL delete_student_by_sno('900106')

⑤创建一存储过程insert_student,通过输入相关信息作为参数,向学生表中添加一学生记录。并利用CALL调用该存储过程查看结果。

DELIMITER $$

CREATE PROCEDURE `stm`.`insert_student`(IN snox CHAR(10),snamex VARCHAR(10),ssexx VARCHAR(1),sagex SMALLINT(5),enterdatex DATETIME)

BEGIN

INSERT INTO student (sno,sname,ssex,sage,enterdate)

VALUES (snox,snamex,ssexx,sagex,enterdatex);

END$$

DELIMITER ;

CALL insert_student('900104','里斯','男',21,'2010-09-12')

2、基本函数过程的创建

①创建一存储函数get_student_num,利用输出参数形式获取学生人数信息。并利用select调用该存储函数查看结果。

DELIMITER $$

CREATE FUNCTION `stm`.`get_student_num`()

RETURNS INT

BEGIN

DECLARE num INT;

SELECT COUNT(*) INTO num FROM student;

RETURN num;

END$$

DELIMITER ;

SELECT get_student_num()

②创建一存储函数get_student_by_sno,通过输入学生编号作为参数,获得该学生的记录信息。并利用select调用该存储函数查看结果。

DELIMITER $$

CREATE FUNCTION `stm`.`get_student_by_sno`(snox CHAR(10))

RETURNS CHAR(100)

BEGIN

DECLARE snamex VARCHAR(10);

DECLARE ssexx VARCHAR(1);

DECLARE sagex SMALLINT;

DECLARE enterdatex DATETIME;

DECLARE record VARCHAR(100);

SELECT sname,ssex,sage,enterdate INTO snamex,ssexx,sagex,enterdatex FROM student

WHERE sno=snox;

SET record=CONCAT_WS(',',snox,snamex,ssexx,sagex,enterdatex);

RETURN record;

END$$

DELIMITER ;

SELECT get_student_by_sno('900106')

3、利用SHOW CREATE {PROCEDURE | FUNCTION} sp_name查看存储过程或函数的定义。

相关文档
最新文档