DELIMITER $$ CREATEPROCEDURE 存储过程的名字(IN 参数1 参数1类型,OUT 参数2 参数2类型,INOUT 参数3 类型) 过程选项 BEGIN 过程内容 END $$ DELIMITER ;
-- 计算某个学生选了多少课程 DELIMITER $$ CREATEPROCEDURE get_choose_number_proc(IN tmp_student_no VARCHAR(10),OUT tmp_choose_count INT) READSSQL DATA BEGIN SELECTCOUNT(*) INTO tmp_choose_count FROM choose WHERE student_no = tmp_student_no; END $$ DELIMITER ;
DELIMITER $$ CREATEPROCEDURE get_choose_number2_proc(INOUT number INT) READSSQL DATA BEGIN SELECTCOUNT(*) INTO number FROM choose WHERE student_no = number; END $$ DELIMITER ;
-- 作业:编写存储过程 -- 1. 查询学生的成绩 -- 传入学生学号、课程编号 返回成绩 DELIMITER $$ CREATEPROCEDURE request_student_record(IN stu_no VARCHAR(20),IN c_no VARCHAR(20),OUT re INT) READSSQL DATA BEGIN SELECT score INTO re FROM choose WHERE student_no = stu_no AND course_no = c_no; END $$ DELIMITER ;
DROPPROCEDURE request_record_name_proc; DELIMITER $$ CREATEPROCEDURE request_record_name_proc(IN t_no VARCHAR(30),OUT tmp_name VARCHAR(30)) READSSQL DATA BEGIN SELECT course_name INTO tmp_name FROM course WHERE t_no = teacher_no; END $$ DELIMITER ;
DROPPROCEDURE choose_proc; DELIMITER $$ CREATEPROCEDURE choose_proc(IN stu_no VARCHAR(20),IN c_no VARCHAR(20),OUT state INT) MODIFIESSQL DATA BEGIN
DECLARE s1 INT; DECLARE s2 VARCHAR(6); DECLARE s3 INT; -- 1. 查询有没有选择过 SELECTCOUNT(*) INTO s1 FROM choose WHERE student_no = stu_no AND course_no = c_no; IF(s1 >=1) THEN SET state =-1; ELSE -- 2. 查询课程是不是已审核的 SELECT STATUS INTO s2 FROM course WHERE course_no = c_no; IF (s2 ='已审核') THEN -- 3. 查询课程是不是人数未满的 SELECT available INTO s3 FROM course WHERE course_no = c_no; IF(s3 >0 ) THEN SET state =0; SET@state2='这里有没有运行?'; -- 插入 INSERTINTO choose VALUES(NULL,stu_no,c_no,NULL,NOW()); -- ELSE SET state =-2; END IF; ELSE SET state =-3; END IF; END IF; END $$ DELIMITER ;