Mysql
 sql >> база данни >  >> RDS >> Mysql

Как работи HANDLER FOR NOT FOUND и за какво се използва?

HANDLER е за улавяне на изключения.

Когато четете от курсора, четенето след края на курсора хвърля NOT FOUND изключение, вместо да връща безкраен поток от NULL , така че трябва да хванете това изключение.

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

Копирано отчасти от моя пример тук .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите идентификатор на ред в mysql

  2. MySQL> Таблица не съществува. Но го прави (или трябва)

  3. PHP и MySQL:Подредете по най-новата дата и ограничение 10

  4. Проверете дали съществува колона в MySQL таблицата чрез PHP

  5. Не успява да инициализира базата данни MySQL на Windows 10