Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];

Вниз

текст SQL ошибки в приложении   Найти похожие ветки 

 
MakNik   (2004-09-28 13:51) [0]

В запросе, выполняемом из приложения, обрабатывается ошибка
IF @RCount<1
begin
RAISERROR ("Error... ",16,1) with log
...
End

Как получить текст этой ошибки в приложении?


 
hooch ©   (2004-09-28 13:55) [1]

TADOConnection.OnExecuteComplete в параметрах передается Error из которого можно получить текст ошибки или

try
 .execute
except
  on E: Exception do
    E.Message <-- оно
end;


 
MakNik   (2004-09-28 17:34) [2]


> hooch ©   (28.09.04 13:55) [1]

- OnExecuteComplete отрабатывает, но ошибку не возвращает...
- а  except вообще не срабатывает...


 
sniknik ©   (2004-09-28 17:51) [3]

> - а  except вообще не срабатывает...
значит ошибки не было.


 
hooch ©   (2004-09-29 08:23) [4]


> - OnExecuteComplete отрабатывает, но ошибку не возвращает...
> - а  except вообще не срабатывает...

значить небыло ошибки ! чтоб сгенерить ошибку в процедуре не забудте сразу после raiserror поставить return


 
АлексейК   (2004-09-29 08:56) [5]

значить небыло ошибки ! чтоб сгенерить ошибку в процедуре не забудте сразу после raiserror поставить return

Совсем необязательно. А вот параметрами RAISERROR"a нужно разобраться на тестовом примере или очень внимательно прочитать весь хелп (лучше конечно с хелпа начать). К примеру в моем частном случае при Severity Levels=16 ошибки в блоке try except не возникало, а вот при значении 11 - пожалуйста. НО ошибку не видело только клиенское приложение (на сервере код отрабатывался правильно), при выполнении подобных действий через Analyzer сообщение об ошибке выводилось. Поробуйте выполнить действие в Analyzer"e, приводящее к ошибке, если оно проходит, значит ошибка все же не возникает, в противном случае разберитесь с RAISERROR.


 
АлексейК   (2004-09-29 09:06) [6]

Да, еще в определенных ситуациях потребутся установка в начале тела процедуры/триггера NOCOUNT ON, подробно опять в хелп, но такой простой пример.
CREATE PROCEDURE TEST
AS
INSERT INTO ....
VALUES ...
RAISERROR...
Ваше приложение RAISERROR не увидет.
А так
CREATE PROCEDURE TEST
AS
SET NOCOUNT ON
INSERT INTO ....
VALUES ...
RAISERROR...

или
CREATE PROCEDURE TEST
AS
RAISERROR...
INSERT INTO ....
VALUES ...

увидет. Если вы конечно через ADO работаете, с DBE точно не знаю.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.031 c
14-1096736432
ArMellon
2004-10-02 21:00
2004.10.24
Заканчиваю работу над прогой и хотелось бы


1-1097137450
Брат
2004-10-07 12:24
2004.10.24
Не запускается приложение


9-1087541504
КиТаЯц
2004-06-18 10:51
2004.10.24
GLScene GLNavigator косяк. Кто сталкивался?


3-1095714619
Maxim______
2004-09-21 01:10
2004.10.24
тормоза BLOB в GDB


1-1097480008
denis24
2004-10-11 11:33
2004.10.24
Картинка на кнопке toolbar





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский