簡體   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