Многие разработчики сталкиваются с неприятной проблемой «Ошибка 1329: нет данных — ноль строк выбрано, выбрано или обработано», когда выполнение хранимых процедур. Однако эта ошибка часто возникает, даже если процедура работает правильно, что поднимает вопрос о том, как подавить это ненужное сообщение.
Одно из возможных решений находится внутри самой хранимой процедуры. По умолчанию ожидается, что хранимые процедуры вернут набор результатов. Однако если процедура выполняет операции, которые не возвращают никаких данных (например, манипулирование данными или обновление записей), она выдает сообщение об ошибке.
Чтобы решить эту проблему, мы можем изменить хранимую процедуру, чтобы явно указать, что он не возвращает никаких данных. Этого можно добиться, добавив в начало процедуры следующую строку:
READS SQL DATA
Эта строка сообщает базе данных, что процедура будет читать только из таблиц и не будет возвращать любые строки.
Другой подход предполагает обработку исключения NOT FOUND внутри процедуры. Когда курсор используется для извлечения строк из таблицы, может возникнуть ситуация, когда строк для выборки больше нет. Это приведет к тому, что курсор вызовет исключение NOT FOUND. Перехватив это исключение и установив флаг, мы можем избежать появления сообщения об ошибке.
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
Добавляя эту строку, мы указываем базу данных, чтобы установить флаг выполнения в 1, когда курсор обнаруживает исключение NOT FOUND. Затем этот флаг можно использовать для выхода из цикла курсора и завершения процедуры без появления сообщения об ошибке.
Наконец, еще один обходной путь — выполнить дополнительный фиктивный запрос, который считывает данные из таблицы и завершается успешно. Это уберет предупреждение в MySQL 5.5.13.
SELECT name INTO l_name FROM customer_tbl LIMIT 1;
Следуя этим подходам, разработчики могут подавить сообщение «Ошибка 1329» для хранимые процедуры, которые не возвращают никаких данных, что обеспечивает более плавное выполнение без ненужных сообщений об ошибках.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3