Задавайте вопросы, мы ответим
Вы не зашли.
Вопрос связан с возможностью досрочного окончания процедурыю Есть ли возможность окончить процедуру досрочно. То есть это аналог оператора return. Я понимаю, что можно обернуть все тело процедуры конструкцией
if ...
then
... procedure body
end if;
Однако этого хотелось бы избежать и написать
if ... then stop procedure END IF;
... procedure body
Спасибо.
Неактивен
Неактивен
Да спасибо. Правда в доке очень скудно и не сразу можно догадаться, что метку можно поставить прямо перед созданием процедуры.
Но это решение. В принципе ниже дано два решения. Можно еще окончить при помощи провозглашения обработчика ошибок. Вопрос, какие недостатки имеет второй способ по сравнению с первым?
CREATE PROCEDURE `dvsp_binary_write_data` ( out ReturnValue int)
end_label:
BEGIN
DECLARE CONTINUE HANDLER FOR SQLSTATE '42000' BEGIN END;
-- first
SET ReturnValue=0;
IF ReturnValue=0 THEN LEAVE end_label; END IF;
-- second
IF ReturnValue=0 THEN call `not_existence_procedure`(); END IF;
-- any other operator of the procedure body
select * from dvsys_users;
END;
Неактивен
Результат будет одинаковым, первый способ более прямой.
Неактивен