Introduction
Error handling in procedures helps you catch and manage problems during database operations so your program can respond properly instead of stopping unexpectedly.
DECLARE handler_type HANDLER FOR condition_value statement; -- Example: DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN -- error handling code here END;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN SET @error_message = 'An error occurred'; END;
DECLARE EXIT HANDLER FOR 1062 BEGIN -- 1062 is duplicate entry error SET @error_message = 'Duplicate entry found'; END;
DECLARE CONTINUE HANDLER FOR NOT FOUND BEGIN SET @no_more_rows = TRUE; END;
DELIMITER $$ CREATE PROCEDURE InsertUser(IN username VARCHAR(50)) BEGIN DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN -- Handle any SQL error SELECT 'Error: Could not insert user.' AS message; END; INSERT INTO users (name) VALUES (username); SELECT 'User inserted successfully.' AS message; END$$ DELIMITER ; -- Call the procedure with a username CALL InsertUser('Alice');
DECLARE HANDLER in a MySQL stored procedure?DECLARE EXIT HANDLER FOR SQLEXCEPTION SET @error_flag = 1;
SET @error_flag = 0;
INSERT INTO users(id, name) VALUES(1, 'Alice');
INSERT INTO users(id, name) VALUES(1, 'Bob');
id is a primary key, what will be the value of @error_flag after execution?DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
DECLARE done BOOLEAN DEFAULT FALSE;
WHILE done = FALSE DO
-- some code
END WHILE;
Pass the test and this pattern moves unknown