Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вызвать ошибку в хранимой процедуре, Как? 
:(
    Опции темы
awers
Дата 27.10.2008, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 1
Всего: 31



Как вызвать ошибку в хранимой процедуре?

Добавлено через 23 секунды
Ибо как в оракле не прохляло
PM MAIL WWW ICQ Skype   Вверх
sir_nuf_nuf
Дата 27.10.2008, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 8
Всего: 31



а вот никак по ходу дела.

могу предложить хак:
вызови несуществующую функцию:
Код

call my_own_exception_occured();


результат будет похожим.


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
awers
Дата 27.10.2008, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 1
Всего: 31



нет. смысл вызове исключения со своим кодом и описанием ошибки.
PM MAIL WWW ICQ Skype   Вверх
Gwire
Дата 27.4.2009, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 216
Регистрация: 7.8.2007
Где: Николаев

Репутация: 1
Всего: 4



smile Хотел создать тему... Смотрю - эта еще не решена.
Меня тоже интересует, какой аналог raise_application_error Oracle-а есть в MySQL, чтобы вызвать ошибку с кодом и описанием.

PM MAIL   Вверх
DimW
Дата 28.4.2009, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 4
Всего: 44



походу так: SIGNAL and RESIGNAL
PM MAIL ICQ   Вверх
Gwire
Дата 29.4.2009, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 216
Регистрация: 7.8.2007
Где: Николаев

Репутация: 1
Всего: 4



smile DimW, багодарю. Это наверное именно то что мне нужно было.
А "наверное" - так как у меня нет начем проверить.
Я работаю с MySQL 5.0.45 который идет в комплекте Denwer3.
Заменить сервер не проблема. Осталось только найти версию 6.0.11 или выше.

А пока можно вот таким алгоритмом:
Код

CREATE TABLE `sys_application_error` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `sid` VARCHAR( 32 )
  `code` INT NOT NULL ,
  `mssg` TEXT NOT NULL ,
PRIMARY KEY ( `id` )
) COMMENT = 'Пользовательские ошибки ведения БД';

DELIMITER {SPACER}

CREATE PROCEDURE raise_application_error(IN code INT, IN mssg TEXT)
BEGIN
    INSERT INTO sys_application_error VALUES (NULL, @sid, code, mssg);
    CALL raise_application_error();
END;
{SPACER} /* Генерация ошибки */

DELIMITER ;


В результате вызова (CALL raise_application_error( -1234, 'Опа Error' ) )
бедет либо такая ошибка:
Код
#1456 - Recursive limit 0 (as set by the max_sp_recursion_depth variable) was exceeded for routine raise_application_error
либо
#1318 - Incorrect number of arguments for PROCEDURE our.raise_application_error; expected 2, got 0


отлавливаем эти ошибки (1456 или 1318) и если текст содержит "raise_application_error", то:
Код

SELECT * FROM sys_application_error WHERE sid=@sid ORDER BY id DESC LIMIT 0, 1;

@sid - имя сессий её нужно либо получить от http-сервера или сгенерировать. Например MD5(client_ip + data_time)

 

Это сообщение отредактировал(а) Gwire - 29.4.2009, 11:46
PM MAIL   Вверх
DimW
Дата 29.4.2009, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 4
Всего: 44



Цитата(Gwire @  29.4.2009,  11:39 Найти цитируемый пост)
А пока можно вот таким алгоритмом

чем больше вникаю в проблемы программистов mySQL, тем больше уважаю и ценю ORACLE  smile 
PM MAIL ICQ   Вверх
Gwire
Дата 29.4.2009, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 216
Регистрация: 7.8.2007
Где: Николаев

Репутация: 1
Всего: 4



Полностью согласен с DimW - ORACLE это крутейшая smile шняга.
Но есть один момент: MySQL больше подходит для шаравиков.
Тем более что он уже не такой деревянный как был.
А там глядишь добавят CONSTRAIN-ы и пакеты
И туда же всунут pl/mySQL smile. O.


PM MAIL   Вверх
DimW
Дата 29.4.2009, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 4
Всего: 44



Цитата(Gwire @  29.4.2009,  17:23 Найти цитируемый пост)
А там глядишь добавят CONSTRAIN-ы и пакеты
И туда же всунут pl/mySQL . O.

как бы не убрали то что есть  smile  http://www.3dnews.ru/news/sun_kupili_za_7_4_mlrd/

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0809 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.