1、存储过程、存储函数、触发器复习题学生信息表课程表成绩表1、 创建一个存储过程,按专业和性别查询学生的信息。delimiter $create PROCEDURE select_by_pro_sex(IN pro char(10),IN sex char(2)BEGINselect * from student where stupro=pro and stuSex=sex;END$delimiter;call select_by_pro_sex(计算机,男);2、 创建一个存储过程,向课程表中插入一门课程的信息,用带参的存储过程实现delimiter $create PROCEDURE pro
2、_insert(IN kid CHAR(3),IN kname char(16),IN kterm INT,IN ktime INT, IN kcredit INT)BEGINinsert into kc VALUES(kid,kname,kterm,ktime,kcredit);END$delimiter;CALL pro_insert(104,mysql,2,80,6);3、 创建一个存储过程,统计某一个专业学生的人数,若人数大于 100 人则给用户变量 str 赋值为 “大专业” ,否则赋值为 “小专业” ,在测试存储过程时输出用户变量的值。delimiter #create PROCE
3、DURE pro_renshu(in renshu int ,out str char(6)BEGINif renshu100 then set str=大专业;ELSE set str=小专业;end if;END #delimiter ;set str=null;CALL pro_renshu(101,str);SELECT str;4、 创建一个存储过程,有两个输入参数:学号和课程名,要求当某学生某门课程的成绩小于 60 分时将其学分修改为零,大于等于 60 分时将学分修改为此课程的学分。DELIMITER $CREATE PROCEDURE XSCJ.DO_UPDATE(IN XH C
4、HAR(6), IN KCM CHAR(16)BEGINDECLARE KCH CHAR(3);DECLARE XF TINYINT;DECLARE CJ TINYINT;SELECT 课程号, 学分 INTO KCH, XF FROM KC WHERE 课程名=KCM;SELECT 成绩 INTO CJ FROM XS_KC WHERE 学号=XH AND 课程号=KCH;IF CJ=60,总学分加上该课程的学分。否则总学分不变。DELIMITER $CREATE TRIGGER tr_ss AFTER INSERTON Score FOR EACH ROWBEGINDECLARE XF INT(1);SELECT kcCredit INTO XF FROM KC WHERE kcId=NEW.kcId;IF NEW.kcScore =60 THENUPDATE student SET stuScore =stuScore +XF WHERE stuNo=NEW.stuNo;END IF;END$DELIMITER ;