编写查询结构以创建或替换名为
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
我试过了,但一直出错
您的代码缺少 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 ;