MySQL要求(1)创建存储过程show_jj,根据前系统时间判断季节,1~3月为“春季”,4~6月为“夏季”,7~9月为“秋季”,10~12月为“冬季”,并将结果存人变量season中。调用该存储过程,显示结果。 (2)创建存储过程sum n,输入整数n,求1+2+...+n,并将结果存人变量rSs中。调用该存储过程,分别求n=10、n=100的结果。 (3)创建存储过程kc xg,使用游标逐条修改课程表中指定学期的每门课程的学时(学时加5学时).但要保证每门课的学时不超过65学时,超过的按65学时算。调用该存储过程,修改第2学期的课程的学时。
时间: 2024-02-24 20:56:40 浏览: 61
好的,针对您的问题,我会逐一回答:
1. 创建存储过程show_jj,根据前系统时间判断季节,1~3月为“春季”,4~6月为“夏季”,7~9月为“秋季”,10~12月为“冬季”,并将结果存入变量season中。调用该存储过程,显示结果。
以下是创建存储过程的SQL语句:
```
DELIMITER $$
CREATE PROCEDURE show_jj()
BEGIN
DECLARE month INT;
DECLARE season CHAR(10);
SET month = MONTH(NOW());
IF month >= 1 AND month <= 3 THEN
SET season = '春季';
ELSEIF month >= 4 AND month <= 6 THEN
SET season = '夏季';
ELSEIF month >= 7 AND month <= 9 THEN
SET season = '秋季';
ELSE
SET season = '冬季';
END IF;
SELECT season;
END $$
DELIMITER ;
```
调用存储过程的SQL语句:
```
CALL show_jj();
```
2. 创建存储过程sum_n,输入整数n,求1+2+...+n,并将结果存入变量rs中。调用该存储过程,分别求n=10、n=100的结果。
以下是创建存储过程的SQL语句:
```
DELIMITER $$
CREATE PROCEDURE sum_n(IN n INT, OUT rs INT)
BEGIN
DECLARE i INT DEFAULT 0;
SET rs = 0;
WHILE i <= n DO
SET rs = rs + i;
SET i = i + 1;
END WHILE;
END $$
DELIMITER ;
```
调用存储过程的SQL语句:
```
CALL sum_n(10, @rs);
SELECT @rs;
CALL sum_n(100, @rs);
SELECT @rs;
```
3. 创建存储过程kc_xg,使用游标逐条修改课程表中指定学期的每门课程的学时(学时加5学时),但要保证每门课的学时不超过65学时,超过的按65学时算。调用该存储过程,修改第2学期的课程的学时。
以下是创建存储过程的SQL语句:
```
DELIMITER $$
CREATE PROCEDURE kc_xg(IN xq CHAR(10))
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE cur CURSOR FOR SELECT 课程号, 学时 FROM 课程表 WHERE 学期 = xq;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
FETCH cur INTO kc_id, kc_xs;
IF done THEN
LEAVE read_loop;
END IF;
SET kc_xs = kc_xs + 5;
IF kc_xs > 65 THEN
SET kc_xs = 65;
END IF;
UPDATE 课程表 SET 学时 = kc_xs WHERE 课程号 = kc_id AND 学期 = xq;
END LOOP;
CLOSE cur;
END $$
DELIMITER ;
```
调用存储过程的SQL语句:
```
CALL kc_xg('第2学期');
```
阅读全文