sql >> Database >  >> RDS >> Mysql

Hoe werkt HANDLER FOR NOT FOUND en wat is het gebruik ervan?

EEN HANDLER is voor het opvangen van uitzonderingen.

Bij het lezen vanaf een cursor, levert lezen voorbij het einde van de cursor een NOT FOUND uitzondering, in plaats van een eindeloze stroom NULL . terug te sturen , dus je moet deze uitzondering opvangen.

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...

Gedeeltelijk gekopieerd van mijn voorbeeld hier .




  1. Hoe alle beperkingen voor externe sleutels in SQL Server-database uit te schakelen - SQL Server / TSQL-zelfstudie, deel 77

  2. $PATH wordt niet opgeslagen nadat ik de terminal verlaat

  3. Gebeurtenissen in javascript met volledige kalender uit de database invullen

  4. Oracle Express Edition voor SQL Practice installeren