Bird
Raised Fist0
MySQLquery~20 mins

Error handling in procedures in MySQL - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Error Handling Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate
2:00remaining
Output of a procedure with DECLARE CONTINUE HANDLER
Consider the following MySQL procedure. What will be the output when calling CALL test_error_handling();?
MySQL
DELIMITER $$
CREATE PROCEDURE test_error_handling()
BEGIN
  DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
  BEGIN
    SELECT 'Error caught';
  END;
  -- This will cause a division by zero error
  SELECT 10 / 0;
  SELECT 'No error';
END$$
DELIMITER ;
AError caught
BProcedure completes without output
CNo error
DSyntax error in procedure
Attempts:
2 left
💡 Hint
Think about what DECLARE CONTINUE HANDLER does when an error occurs inside the procedure.
🧠 Conceptual
intermediate
1:30remaining
Purpose of DECLARE EXIT HANDLER in MySQL procedures
What is the main difference between a DECLARE CONTINUE HANDLER and a DECLARE EXIT HANDLER in MySQL stored procedures?
ABoth handlers behave the same and continue execution after handling the error.
BCONTINUE HANDLER stops the procedure after handling the error; EXIT HANDLER allows it to continue.
CEXIT HANDLER is used only for warnings, CONTINUE HANDLER only for errors.
DCONTINUE HANDLER allows the procedure to continue after handling the error; EXIT HANDLER stops the procedure after handling the error.
Attempts:
2 left
💡 Hint
Think about what happens to the procedure flow after the handler runs.
📝 Syntax
advanced
2:00remaining
Identify the syntax error in this error handler declaration
Which option correctly fixes the syntax error in this MySQL procedure snippet?
MySQL
CREATE PROCEDURE sample_proc()
BEGIN
  DECLARE HANDLER FOR SQLEXCEPTION
  BEGIN
    SELECT 'Error';
  END;
END;
ARemove BEGIN and END inside handler block
BAdd EXIT keyword: DECLARE EXIT HANDLER FOR SQLEXCEPTION
CChange to DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
DNo change needed, syntax is correct
Attempts:
2 left
💡 Hint
MySQL requires a handler type keyword before HANDLER.
🔧 Debug
advanced
2:30remaining
Why does this procedure not catch the error as expected?
Given this procedure, why does the error not get caught by the handler?
MySQL
DELIMITER $$
CREATE PROCEDURE test_proc()
BEGIN
  DECLARE EXIT HANDLER FOR SQLEXCEPTION
  BEGIN
    SELECT 'Error caught';
  END;
  SET @x = 1/0;
  SELECT 'No error';
END$$
DELIMITER ;
AThe handler is EXIT type, so it exits before printing 'Error caught'
BDivision by zero in SET statement does not raise SQLEXCEPTION
CSET @x = 1/0 is evaluated outside the procedure context, so handler does not catch it
DThe error occurs before the handler is declared
Attempts:
2 left
💡 Hint
Consider where the error happens and how MySQL evaluates expressions.
❓ optimization
expert
3:00remaining
Optimizing error handling for multiple error codes
You want to catch multiple specific SQL error codes in a MySQL procedure and handle them differently. Which approach is the most efficient and correct?
ADeclare multiple handlers, one for each error code, each with its own handler block
BUse a single EXIT handler for all errors and re-raise errors for unhandled codes
CDeclare one handler for SQLWARNING and ignore error codes
DDeclare one handler for SQLEXCEPTION and use IF statements inside to check error codes
Attempts:
2 left
💡 Hint
MySQL allows multiple handlers for different conditions.

Practice

(1/5)
1. What is the main purpose of using DECLARE HANDLER in a MySQL stored procedure?
easy
A. To declare variables inside the procedure
B. To catch and handle errors during procedure execution
C. To create temporary tables for data processing
D. To optimize query performance automatically

Solution

  1. Step 1: Understand the role of DECLARE HANDLER

    DECLARE HANDLER is used to define actions when certain conditions or errors occur during procedure execution.
  2. Step 2: Identify the purpose in error handling

    It helps catch errors and decide whether to continue or exit, preventing crashes and allowing custom responses.
  3. Final Answer:

    To catch and handle errors during procedure execution -> Option B
  4. Quick Check:

    Error handling = DECLARE HANDLER usage [OK]
Hint: DECLARE HANDLER is for managing errors inside procedures [OK]
Common Mistakes:
  • Confusing DECLARE HANDLER with variable declaration
  • Thinking it creates tables or indexes
  • Assuming it optimizes queries automatically
2. Which of the following is the correct syntax to declare a handler for SQL exceptions that continues execution in MySQL?
easy
A. DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN ... END;
B. DECLARE HANDLER CONTINUE FOR SQLEXCEPTION;
C. DECLARE HANDLER FOR CONTINUE SQLEXCEPTION;
D. DECLARE HANDLER FOR SQLEXCEPTION CONTINUE;

Solution

  1. Step 1: Recall correct DECLARE HANDLER syntax

    The syntax is: DECLARE [CONTINUE|EXIT] HANDLER FOR condition statement;
  2. Step 2: Match syntax with options

    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN ... END; correctly uses DECLARE CONTINUE HANDLER FOR SQLEXCEPTION followed by a statement block.
  3. Final Answer:

    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN ... END; -> Option A
  4. Quick Check:

    Correct syntax = DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN ... END; [OK]
Hint: Syntax: DECLARE CONTINUE HANDLER FOR error BEGIN...END [OK]
Common Mistakes:
  • Placing CONTINUE after HANDLER incorrectly
  • Omitting BEGIN...END block for multiple statements
  • Wrong order of keywords
3. Consider this procedure snippet:
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');

Assuming id is a primary key, what will be the value of @error_flag after execution?
medium
A. 1
B. 0
C. NULL
D. Procedure will crash without setting @error_flag

Solution

  1. Step 1: Analyze the inserts and handler

    The first insert succeeds. The second insert violates primary key (duplicate id), causing an SQLEXCEPTION.
  2. Step 2: Understand EXIT HANDLER effect

    The EXIT HANDLER sets @error_flag = 1 and stops further execution.
  3. Final Answer:

    1 -> Option A
  4. Quick Check:

    Duplicate key error triggers EXIT HANDLER = 1 [OK]
Hint: EXIT HANDLER sets flag on error and stops execution [OK]
Common Mistakes:
  • Assuming @error_flag stays 0 despite error
  • Thinking procedure continues after EXIT HANDLER
  • Confusing CONTINUE and EXIT handlers
4. Identify the error in this MySQL procedure snippet:
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
DECLARE done BOOLEAN DEFAULT FALSE;
WHILE done = FALSE DO
-- some code
END WHILE;
medium
A. NOT FOUND is not a valid condition for handler
B. Missing semicolon after DECLARE statements
C. WHILE loop condition syntax is incorrect
D. Handler declared before variable 'done' is declared

Solution

  1. Step 1: Check declaration order rules

    In MySQL procedures, variables must be declared before handlers.
  2. Step 2: Identify declaration order in snippet

    The handler is declared before the variable 'done', which is invalid.
  3. Final Answer:

    Handler declared before variable 'done' is declared -> Option D
  4. Quick Check:

    Variables before handlers = correct order [OK]
Hint: Declare variables before handlers in procedures [OK]
Common Mistakes:
  • Declaring handlers before variables
  • Confusing NOT FOUND condition usage
  • Ignoring declaration order rules
5. You want to write a procedure that tries to insert a new user but if a duplicate key error occurs, it should update the user's name instead. Which error handling approach is best?
hard
A. Use DECLARE CONTINUE HANDLER for NOT FOUND to insert new user
B. Use DECLARE EXIT HANDLER for any error to rollback transaction
C. Use DECLARE CONTINUE HANDLER for duplicate key error to run UPDATE statement
D. Use no handler and rely on client application to handle errors

Solution

  1. Step 1: Understand the goal

    Insert user; if duplicate key error occurs, update existing user's name instead.
  2. Step 2: Choose handler type

    CONTINUE HANDLER allows procedure to continue after catching duplicate key error and run UPDATE.
  3. Step 3: Evaluate other options

    EXIT HANDLER stops execution, NOT FOUND is unrelated, and no handler defers error handling outside procedure.
  4. Final Answer:

    Use DECLARE CONTINUE HANDLER for duplicate key error to run UPDATE statement -> Option C
  5. Quick Check:

    CONTINUE HANDLER for duplicate key = update fallback [OK]
Hint: Use CONTINUE HANDLER to catch duplicate key and update [OK]
Common Mistakes:
  • Using EXIT HANDLER which stops procedure
  • Using NOT FOUND for duplicate key errors
  • Ignoring error handling inside procedure
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard