1

好的,我在这本书的 MySQL 部分的最后一个问题。它是关于存储过程 (D:)。理解一些逻辑有点麻烦。我已经掌握了它的基础知识并编写了许多存储过程。但这一个令人困惑。

任何和所有的帮助都将是惊人的。

问题:

-- 4.创建一个名为 spUpdateStudent 的存储过程,它接受学生姓名和 --next of kin 信息作为参数。该过程必须通过从学生表中查找学生 ID 来将近亲信息插入到近亲表中。

我的代码:

DELIMITER // 
CREATE PROCEDURE `UniversityDB`.`spUpdateStudent`(In  student_first_name VARCHAR(25), next_of_kin varchar(50))
BEGIN 
    SELECT * 
    FROM next_of_kin;
  WHERE student_id = 01234;  -- Example 
  INSERT next_of_kin;
END // 
DELIMITER;
CALL spUpdateStudent();

我的数据库名称是 UniversityDB。

非常感谢!!!

4

1 回答 1

0

您快到了!

CREATE PROCEDURE `UniversityDB`.`spUpdateStudent`(In  p_student_first_name VARCHAR(25), p_next_of_kin varchar(50))
BEGIN
    -- Declare a variable to hold the ID of the student
    DECLARE v_student_id INT;
    -- Get the student ID
    SELECT student.id INTO v_student_id FROM student;
    WHERE student_firstname = p_student_first_name

    -- Now we have the student id lets update the next of kin table
    UPDATE next_of_kin
    SET next_of_kin.name = p_next_of_kin
    WHERE next_of_kin = v_student_id
END //

我在参数名称的开头使用了“p_”,在变量名称的开头使用了“v_”。这不是(我不认为)任何特定的标准,但是我喜欢它,因为在阅读值的来源时它是有道理的。

于 2013-03-07T20:21:24.020 回答