![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не вызывается Exception [D6, MSSQL]
Eugen1001 © (2002-01-29 18:47:00)Такая вот загадочная ситуация.
Есть TQuery вызывающий хранимую процедуру.
У него настроен DataSource для параметров.
Процедура имеет несколько уровней вложенности.
Где-то внутри процедуры происходит Exception
"Primary key violation", но Delphi при этом
не попадает в облать Except, а спокойно
продолжает работать.
Так вопрос следюущий: что нужно сделать,
чтобы в Delphi вызывался Exception,
или при данных условиях на это тяжело рассчитывать?
eugen1001 (2002-01-29 20:54:00) [1]Я тоже дошел до того, что работать можно только с ADO,
и только с ADOCommand. Все эти ADOTable и ADOStoredProc - от лукавого.
Правда завершая тему хочу сказать, что рядом лежит другой такой же TQuery (они последовательно запускаются), так он работает нормально. Но в нем всего 2 параметра типа int.
В общем кидаю ручками параметры, как все нормальные люди.
Delirium (2002-01-29 20:26:00) [2]Весело, я такого не замечал, правда я работаю принципиально только с ADO.
eugen1001 (2002-01-29 20:22:00) [3]Я для профилактики в конце основной процедуры вообще написал:
select 1 / 0, и хоть бы что
eugen1001 (2002-01-29 20:21:00) [4]Да нет. Короче перестал я использовать DataSource в TQuery и
все заработало.
Видимо Delphi считает, что баловство вызывать exception из
Detail-query.
Жаль в документации про это не очень написано.
Delirium (2002-01-29 19:15:00) [5]Попробуй поставить RAISERROR до заключительного SELECT-а
eugen1001 (2002-01-29 18:58:00) [6]Я учел этот момент и в конце последней процедуры добавил
RaiseError, но он не виден, обидно, что QueryAnalyser
спокойно выводит оба сообщения об ошибке. :-(((
Delirium (2002-01-29 18:54:00) [7]Видимо ошибка "застревает" среди вложенных процедур, или обрабатывается ими-же. Надо бы провести её в базовую процедуру, как результат работы вложенных процедур и вызвать RAISERROR.
Я думаю так.