你能帮我解决这个问题吗?

问题描述 投票:0回答:1

编写查询结构以创建或替换名为

UPDATELEADERSSCORE
的存储过程,该存储过程采用
inSchoolID
参数作为
integer
inLeaderScore
参数作为
integer
.

CREATE PROCEDURE UPDATE_LEADERS_SCORE( in_School_ID INTEGER, in_Leader_Score INTEGER)
BEGIN
    UPDATE SCHOOLS
    SET Leader_Score = in_Leader_Score
    WHERE School_ID = in_School_ID

我试过了,但一直出错

mysql sql mysql-error-1064
1个回答
0
投票

您的代码缺少 DELIMITER 语句和 UPDATE 语句后的分号。此外,在声明输入参数时,最好对 IN 关键字使用大写字母。

DELIMITER //

DROP PROCEDURE IF EXISTS UPDATE_LEADERS_SCORE //
CREATE PROCEDURE UPDATE_LEADERS_SCORE(IN in_School_ID INTEGER, IN in_Leader_Score INTEGER)
BEGIN
    UPDATE SCHOOLS
    SET Leader_Score = in_Leader_Score
    WHERE School_ID = in_School_ID;
END //
DELIMITER ;

您还应该考虑使用注释以及如何处理错误,例如:

DELIMITER //

DROP PROCEDURE IF EXISTS UPDATE_LEADERS_SCORE //
CREATE PROCEDURE UPDATE_LEADERS_SCORE(IN in_School_ID INTEGER, IN in_Leader_Score INTEGER)
BEGIN
    -- Declare a CONTINUE HANDLER for duplicate key error
    DECLARE CONTINUE HANDLER FOR 1062
    SELECT 'Error, duplicate key occurred';

    -- Update the SCHOOLS table with the new Leader_Score
    UPDATE SCHOOLS
    SET Leader_Score = in_Leader_Score
    WHERE School_ID = in_School_ID;
END //

DELIMITER ;
© www.soinside.com 2019 - 2024. All rights reserved.