USE stumanbd;
/* 当需要对数据库进行一系列复杂操作用于实现一个目的时,
可以将这些复杂操作封装成一个代码块,这就叫存储过程。
存储过程可以重复使用,从而大大减少数据库开发人员的工作量。
*/
SELECT Stuno,stuname,stugender FROM t_students;
/*创建存储过程proc2,用于查询教师的工号、姓名和职称。*/
DELIMITER $$
CREATE PROCEDURE proc1()
BEGIN
SELECT teano,teaname,profetitle FROM t_teachers,t_profetitle
WHERE t_teachers.profetitleno=t_profetitle.profetitleno;
END $$
DELIMITER ;
CALL proc1;/*呼叫存储过程*/
/*查看存储过程proc1的状态。*/
SHOW PROCEDURE STATUS LIKE "proc1";
/*删除存储过程*/
DROP PROCEDURE proc1;
/*创建存储过程proc2,实现输入学生的学号,查询学生的信息。*/
DELIMITER $$
CREATE PROCEDURE proc2(IN stuid VARCHAR(30))
BEGIN
SELECT stuno,stuname,stugender,stubirth FROM t_students
WHERE stuno=stuid;
END $$
DELIMITER ;
CALL proc2('35091903024');/*呼叫存储过程*/
/*查看proc2存储过程的状态*/
SHOW CREATE PROCEDURE proc2;
/*从information_schema.Routines表中查看存储过程的信息*/
SELECT * FROM information_schema.Routines
/*修改存储过程proc1,将读写权限改为READS SQL DATA。*/
ALTER PROCEDURE proc1 READS SQL DATA;
/*删除存储过程proc1。*/
DROP PROCEDURE proc1;
/*创建自定义函数getstuname,
从“学生表”中根据指定的学生学号获取学生姓名。*/
/*修改log_bin_trust_function_creators防止报错*/
SET GLOBAL log_bin_trust_function_creators = 1;
DELIMITER $$
CREATE FUNCTION getstuname(stucode VARCHAR(11))
RETURNS VARCHAR(50) CHARSET utf8mb4
BEGIN
DECLARE studentname VARCHAR(50);
SELECT stuname INTO studentname FROM t_students WHERE stuno = stucode;
RETURN studentname;
END $$
DELIMITER ;
SELECT getstuname("35092002010");/*调用自定义函数*/
【MySQL】存储过程与函数
最新推荐文章于 2024-08-21 23:28:12 发布