В этом учебном пособии вы узнаете, как настроить обработчик для условия NOT FOUND курсора в MySQL с синтаксисом и примерами.
Описание
Если вы попытаетесь извлечь данные из курсора, а в нем нет строк, MySQL выдаст ошибку NO DATA. Вы можете настроить обработчик для NOT FOUND, чтобы ваша хранимая программа не прерывалась ошибкой.
Синтаксис
Синтаксис установки обработчика для условия NOT FOUND для курсора в MySQL:
Параметры или аргументы
set_condition - условие для установки, когда курсор примет NOT FOUND.
Пример
Рассмотрим, как настроить обработчик условия NOT FOUND для курсора в MySQL.
Во-первых, нам нужно объявить переменную, которая будет установлена при возникновении ошибки NO DATA.
1 |
DECLARE done INT DEFAULT FALSE; |
Затем нам нужно объявить курсор.
1 2 3 4 |
DECLARE cr1 CURSOR FOR SELECT site_id FROM sites WHERE site_name = name_in; |
Наконец, нам нужно объявить обработчик для условия NOT FOUND для курсора.
1 |
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; |
Ниже приведена функция, которая демонстрирует, как объединить все эти компоненты для установки обработчика условия NOT FOUND для курсора в MySQL, чтобы ваша хранимая программа не завершилась с ошибкой.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
DELIMITER // CREATE FUNCTION FindSiteID ( name_in VARCHAR(50) ) RETURNS INT BEGIN DECLARE done INT DEFAULT FALSE; DECLARE siteID INT DEFAULT 0; DECLARE cr1 CURSOR FOR SELECT site_id FROM sites WHERE site_name = name_in; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cr1; FETCH cr1 INTO siteID; CLOSE cr1; RETURN siteID; END; // DELIMITER ; |