【问题标题】:Stuck in creating a Simple procedure in MySQL [IF statement]坚持在 MySQL [IF 语句] 中创建简单过程
【发布时间】:2016-09-27 02:37:10
【问题描述】:

我想在 MySql 中使用 IF 语句创建一个过程,当我将学生的 id 作为 IN 参数时,它可以让我显示所有平均高于 70 的学生的姓名。

是否可以一次提供多个学生 ID 并使用 CALL 和 SELECT 访问更多结果?

学生桌:

id、姓名、专业、平均、状态
'33', '维拉紫罗兰', NULL, '92', 'UNCL'
'94'、'Pat Pink'、'POLS'、'93'、'UNCL'
'101'、'Bob Blue'、'ECON'、'73'、'UNCL'
'102'、'怀亚特怀特'、'GEOG'、'64'、'UNGR'
'302'、'Yolanda Yellow'、'HIST'、'64'、'UNGR'
'403','布莱恩布莱克', “经济”、“87”、“研究生”
'576'、'Ruby Rose'、'ECON'、'77'、'UNCL'
“992”、“格雷格·格林”、“通讯”、“86”、“毕业”

这是我尝试过的:(但没有奏效)

DELIMITER $$
CREATE PROCEDURE sort_Students_By_Avg( IN student_Id INT(11), OUT student_Name VARCHAR(20))
BEGIN 
DECLARE student_Avg INT(11); 
SELECT avg INTO student_Avg
FROM student
WHERE id=student_Id; 

IF (student_Avg > 70)
THEN SET student_Name = student.name;
END IF;
END $$  

【问题讨论】:

    标签: mysql sql stored-procedures procedure


    【解决方案1】:

    这似乎不是特别有用,但过程如下所示:

    CREATE PROCEDURE sort_Students_By_Avg (
        IN in_student_Id INT(11),
        OUT out_student_Name VARCHAR(20)
    )
    BEGIN
        SELECT s.name INTO out_student_name
        FROM student s
        WHERE s.id = in_student_Id AND s.avg > 70; 
    END;
    

    【讨论】:

    • 非常感谢,伙计。是否可以一次提供多个学生 ID 并使用 CALL 和 SELECT 访问更多结果?
    猜你喜欢
    • 1970-01-01
    • 2020-02-22
    • 2013-08-06
    • 2021-04-04
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    相关资源
    最近更新 更多