繁体   English   中英

如何使用“IF 语句”创建存储过程?

[英]How to create a stored procedure with "IF statements"?

请帮我解决这个存储过程问题 1. 创建下表

CREATE TABLE tblEnrolled
(
    id INT(11) AI PK,
    studNum VARCHAR(9),
    subjCode VARCHAR(20)
)

创建一个可以insert into tblEnrolled的过程

一种。 如果学号不存在,则不插入,回复:学号不存在。

b. 如果主题代码不存在,则不插入,响应:主题代码不存在。

C。 如果学号已经在给定的科目代码中有及格分数(包括INC,4.00),不插入,回复:Student already passed the given subject。

d. 如果tblGrade表中不存在学号和学科代码,或者在tblGrade表中但成绩不及格,则插入记录,响应:New record added。

我不知道接下来的步骤:

CREATE TABLE tblEnrolled (id INT(11) AUTO_INCREMENT PRIMARY KEY, studNum VARCHAR(9), subjCode VARCHAR(20));
DELIMITER $$
CREATE PROCEDURE grade(IN studNum VARCHAR(9), IN subjCode VARCHAR(20))
RETURNS VARCHAR (50)
DETERMINISTIC
BEGIN
DECLARE r VARCHAR(50);

?????

这会让你更接近一点:

CREATE TABLE tblEnrolled (
    id INT(11) AUTO_INCREMENT PRIMARY KEY,
    studNum VARCHAR(9),
    subjCode VARCHAR(20)
);

DELIMITER $$

CREATE PROCEDURE grade(IN _studNum VARCHAR(9), IN _subjCode VARCHAR(20))
    RETURNS VARCHAR (50)
    DETERMINISTIC
BEGIN
    IF (_studNum IS NULL)
    THEN -- a. If the student number does not exist, do not insert,
        SELECT "Student Number not supplied.";
    ELSE IF (_subjCode IS NULL)
    THEN  --  b. If the subject code does not exist, do not insert, response: 
        SELECT "Subject Code does not exist.";
    ELSE IF ( EXISTS( SELECT 1 FROM tbl WHERE ... ) )
    THEN -- c. If the student number is already graded in the given subject code with passing grade (including INC, 4.00), do not insert, response: 
        SELECT "Student already passed the given subject.";
    ELSE BEGIN
        SET @sql = "SELECT grade INTO @grade FROM tblGrade WHERE student_num = ?";
        PREPARE _SQL FROM @sql;
        EXECUTE _SQL, _student_num;
        DEALLOCATE PREPARE _SQL;
        IF @grade IS NULL OR @grade < 1.0
        THEN  -- d. If the student number and subject code do not exist in the tblGrade table or it is in the tblGrade table but with failing grade, insert the record,
            BEGIN
                INSERT INTO ...;
                SELECT "New record added.";
            END;
        END IF;
    END;
END $$

DELIMITER ;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM