| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
IceZ
Зарегистрирован: 28.03.2005 Сообщения: 69 Откуда: Киев
|
Добавлено: Сб Фев 25, 2006 5:06 pm Заголовок сообщения: RAISERROR |
|
|
Написал триггер. Пытаюсь с его помощью вывести текстовое описание ошибки
Create Trigger some trigger
ON JOURNAL FOR INSERT
AS
........
IF isnull(@COUNT)
begin
RAISERROR ('Вы в чем то ошиблись!',16,1)
ROLLBACK TRAN
end
Но в Акценте в момент "положительной реакции" триггера на вставку
пишется что информация об ошибке не доступна.
Что делать? |
|
| Вернуться к началу |
|
 |
olimp Site Admin
Зарегистрирован: 10.03.2005 Сообщения: 2056
|
Добавлено: Сб Фев 25, 2006 6:30 pm Заголовок сообщения: Re: RAISERROR |
|
|
| IceZ писал(а): | Написал триггер. Пытаюсь с его помощью вывести текстовое описание ошибки
Create Trigger some trigger
ON JOURNAL FOR INSERT
AS
........
IF isnull(@COUNT)
begin
RAISERROR ('Вы в чем то ошиблись!',16,1)
ROLLBACK TRAN
end
Но в Акценте в момент "положительной реакции" триггера на вставку
пишется что информация об ошибке не доступна.
Что делать? |
Запиши ошибку в таблицу, а потом прочти из VBS |
|
| Вернуться к началу |
|
 |
kris
Зарегистрирован: 12.01.2006 Сообщения: 62
|
Добавлено: Пн Фев 27, 2006 10:08 am Заголовок сообщения: Re: RAISERROR |
|
|
| olimp писал(а): | | IceZ писал(а): | Написал триггер. Пытаюсь с его помощью вывести текстовое описание ошибки
Create Trigger some trigger
ON JOURNAL FOR INSERT
AS
........
IF isnull(@COUNT)
begin
RAISERROR ('Вы в чем то ошиблись!',16,1)
ROLLBACK TRAN
end
Но в Акценте в момент "положительной реакции" триггера на вставку
пишется что информация об ошибке не доступна.
Что делать? |
Запиши ошибку в таблицу, а потом прочти из VBS |
Вообще-то было бы неплохо хоть минимальную обработку ошибок при работе с SQL реализовать в Акценте... Я имею ввиду именно "Информация об ошибке недоступна". Очень часто оно вылазит без предупреждения при обработке больших массивов больших документов. В результате (по моим личным наблюдениям) получаем примерно 1 "кривой" документ на 5000 нормальных. А поскольку операция обработки документов (в данном случае) проводится в автоматическом режиме, то пользователю, прыгающему на месте от счастья, приходится лопатить эти 5000 документов в поисках глючного. Тем более что где именно у него глюк - неизвестно.
Может быть не по теме и немного путано, но хотелось бы это увидеть хоть в каком-то виде в той же 7.40... |
|
| Вернуться к началу |
|
 |
taa
Зарегистрирован: 11.03.2005 Сообщения: 135
|
Добавлено: Пн Фев 27, 2006 10:28 am Заголовок сообщения: Re: RAISERROR |
|
|
| IceZ писал(а): | | IF isnull(@COUNT) |
Для начала if @COUNT is null |
|
| Вернуться к началу |
|
 |
IceZ
Зарегистрирован: 28.03.2005 Сообщения: 69 Откуда: Киев
|
Добавлено: Пн Фев 27, 2006 6:23 pm Заголовок сообщения: Re: RAISERROR |
|
|
| taa писал(а): | | IceZ писал(а): | | IF isnull(@COUNT) |
Для начала if @COUNT is null |
Спасибо.
Но не стоит себя утруждать подобными комментариями. |
|
| Вернуться к началу |
|
 |
taa
Зарегистрирован: 11.03.2005 Сообщения: 135
|
Добавлено: Вт Фев 28, 2006 2:34 pm Заголовок сообщения: Re: RAISERROR |
|
|
| IceZ писал(а): | | Но не стоит себя утруждать подобными комментариями. |
Вообще то это было указание на конкретную ошибку... |
|
| Вернуться к началу |
|
 |
IceZ
Зарегистрирован: 28.03.2005 Сообщения: 69 Откуда: Киев
|
Добавлено: Вт Фев 28, 2006 4:50 pm Заголовок сообщения: Re: RAISERROR |
|
|
| taa писал(а): | | IceZ писал(а): | | Но не стоит себя утруждать подобными комментариями. |
Вообще то это было указание на конкретную ошибку... |
Просто поторопился когда писал пример кода в форум. Ведь не весь триггер же вас интересует .
Да и инетерсовало меня совсем другое. Казалось бы, после вызова RaiseError у пользователя должен возникнуть msgbox с заданным в триггере текстом ошибки. А вместо него возникает "Информация об ошибке недоступна". Т.ё триггер сработал, но моё описание ошибки пользователю не дал |
|
| Вернуться к началу |
|
 |
olimp Site Admin
Зарегистрирован: 10.03.2005 Сообщения: 2056
|
Добавлено: Вт Фев 28, 2006 5:40 pm Заголовок сообщения: Re: RAISERROR |
|
|
Это известная проблема OLE DB. Если ошибка (и Raise в том числе) просто так, то ловится без проблем, а если внутри транзакции - то болт - The statement has been terminated.
MS говорит - переходите на ADO.NET, а в OLE-DB уже ничего менять не будут... |
|
| Вернуться к началу |
|
 |
Oleg
Зарегистрирован: 05.07.2005 Сообщения: 9 Откуда: Енакиево
|
Добавлено: Пт Мар 10, 2006 9:11 am Заголовок сообщения: |
|
|
Может запоздало...Как обходить странное поведение SQL SERVER можно почитать у Кена Хендерсона:" Проффесиональное руководство по SQL SERVER:хранимые процедуры,ХМL,...." 2005,Питер. Можно найти в Инете ПДФ. Глава 7. Все описать невозможно, нужно читать(чем сейчас и занимаюсь ) |
|
| Вернуться к началу |
|
 |
olimp Site Admin
Зарегистрирован: 10.03.2005 Сообщения: 2056
|
Добавлено: Пт Мар 10, 2006 9:18 am Заголовок сообщения: |
|
|
| Oleg писал(а): | Может запоздало...Как обходить странное поведение SQL SERVER можно почитать у Кена Хендерсона:" Проффесиональное руководство по SQL SERVER:хранимые процедуры,ХМL,...." 2005,Питер. Можно найти в Инете ПДФ. Глава 7. Все описать невозможно, нужно читать(чем сейчас и занимаюсь ) |
Там про странности OLE DB тоже есть ? |
|
| Вернуться к началу |
|
 |
fly
Зарегистрирован: 31.05.2005 Сообщения: 104
|
Добавлено: Пт Июл 23, 2010 11:38 pm Заголовок сообщения: |
|
|
поборол 2005 сиквел добавлением опцией немедленного вывода сообщения:
raiserror(@message, 16, 1) with NOWAIT
rollback transaction
В моем случае сообщение перестало выводится после перехода на SQL 2005 |
|
| Вернуться к началу |
|
 |
|