SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 07.02.2011 15:54:45

outblaze
Участник
Зарегистрирован: 07.02.2011
Сообщений: 2

Эмуляция исключений в хранимкам с текстом

Приветствую.
На сколько я знаю, SIGNAL будет/есть только в 5.2.x, однако, основная промышленная версия сервера, установленного на почти всех хостингах - 5.0.х/5.1.х, собственно, поэтому возник такой вопрос:

Как для линеек 5.0.х/5.1.х сделать выброс исключения в хранимках с текстом ошибки.

например:


declare error_message varchar(255);
declare my_error handler for not found select error_message;
...
if not <em>some_cond</em> then
    set error_message = 'My detailed error description';
    call dummy_raise_error();
end if;
 


здесь, если условие some_cond не выполняется, переменной присваивается описание ошибки (My detailed error description) и вызывается несуществующая ф-ция для возникновения исключения (condition), обработчик которого должен по идее вернуть установленную error_message в My detailed error description, однако, этого не происходит, и возвращается пустая строка, точнее null.

подскажите пожалуйста

1. как можно организовать выброс (и передачу клиенту) ошибок и их пояснительных сообщений, формируемых динамически в процессе выполнения логики хранимки.

2. досрочно выйти из хранимой процедуры


Спасибо.

Отредактированно outblaze (07.02.2011 15:57:15)

Неактивен

 

#2 08.02.2011 00:04:48

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Эмуляция исключений в хранимкам с текстом

В 5.5 есть :)

Кажется, Вы сильно усложняете себе жизнь. Если всё равно хотите вывести
текст — выведите явно:

CREATE PROCEDURE throw ()
BEGIN
    IF 1 != 2 THEN
        SELECT 'They are NOT EQUAL!!! :(';
        SELECT 1 FROM ___error;
    END IF;
END;;


Или даже просто SELECT 1 FROM they_are_not_equal_error;

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson