首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MySQL Navicat 創建存儲過程報 1458 錯誤:IF 語句缺少 THEN 關鍵字

     編輯:程式設計綜合問答

錯誤代碼

CREATE PROCEDURE searchStudentGrade(IN id CHAR)
BEGIN
    IF id IS NULL
        SELECT ...;  -- 錯誤:IF 後必須跟 THEN
    ELSE
        SELECT ...;
    END IF;
END;

修正代碼

CREATE PROCEDURE searchStudentGrade(IN id CHAR)
BEGIN
    IF id IS NULL THEN   -- 關鍵:添加 THEN
        SELECT student.StudentID, student.StudentName, student.ClassNumber,
               grade.ExamID, course.CourseName, grade.Grade, course.CourseID
        FROM student, grade, course
        WHERE student.StudentID = grade.StudentID
          AND grade.CourseID = course.CourseID;
    ELSE
        SELECT student.StudentID, student.StudentName, student.ClassNumber,
               grade.ExamID, course.CourseName, grade.Grade, course.CourseID
        FROM student, grade, course
        WHERE student.StudentID = grade.StudentID
          AND grade.CourseID = course.CourseID
          AND grade.StudentID = id;
    END IF;
END;

MySQL 流程控制語法速查

結構語法模板
IF-THEN-ELSEIF condition THEN statements; [ELSE statements;] END IF;
CASECASE WHEN cond THEN stmt; [ELSE stmt;] END CASE;
LOOP[label:] LOOP statements; END LOOP;
WHILEWHILE condition DO statements; END WHILE;
REPEATREPEAT statements; UNTIL condition END REPEAT;

Navicat 使用技巧

  • 編輯器中輸入 IF 後按 Ctrl+Space 喚醒代碼補全,自動插入 THEN ... END IF; 骨架。
  • 執行前點擊「語法檢查」圖標(或 F7),提前發現語法錯誤。
  • 存儲過程參數類型建議具體化:IN id INT 或 IN id VARCHAR(20),避免 CHAR 隱式補空格導致匹配失敗。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved