Still kinda new to MySQL. I was wondering what is HANDLER FOR NOT FOUND, how does it work and most importantly: what is its usage?
Asked
Active
Viewed 3,239 times
0
-
You might try Google. Take a look at [this](https://dev.mysql.com/doc/refman/8.0/en/declare-handler.html) – Sloan Thrasher May 13 '18 at 22:41
1 Answers
2
A HANDLER
is for catching exceptions.
When reading from a cursor, reading past the end of the cursor throws a NOT FOUND
exception, rather than returning an endless stream of NULL
, so you have to catch this exception.
DECLARE val1 INT DEFAULT NULL;
DECLARE done TINYINT DEFAULT FALSE;
DECLARE c1 CURSOR FOR SELECT id FROM t1;
-- when the NOT FOUND condition fires, "done" -- which defaults to FALSE -- will be set to true,
-- and since this is a CONTINUE handler, execution continues with the next statement.
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN c1;
my_loop:
LOOP
FETCH NEXT FROM c1 INTO val1;
IF done THEN -- this will be true when we are out of rows to read, so we go to the statement after END LOOP.
LEAVE my_loop;
ELSE
-- maybe do more stuff here
END IF;
END LOOP;
-- procedure continues here...
Copied in part from my example here.

Michael - sqlbot
- 169,571
- 25
- 353
- 427