【MySQL】存储过程与函数

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");/*调用自定义函数*/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值