|
|
|
MSSQL 2000 Не возвращаются ошибки из хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Может я как-то и задавал этот вопрос, но до сих пор не победил проблему. Вообщем из одной хранимой процедуры вызывается другая, в той происходит ошибка, ее можно увидеть если запустить программу из Query Analyzer, но клиентское приложения (Delphi 5) не всегда получает это сообщение. Причем в той процедуре есть команда INSERT. Если до него поставить RAISERROR, то ошибка вернется клиенту, если после, то уже не возвращается. Что можно сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2002, 20:52:13 |
|
||
|
MSSQL 2000 Не возвращаются ошибки из хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Это проблема Delphi. Чтобы здесь не обсуждать дельфийские глюки держи две ссылки как раз про это : http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1024036737&n=1 http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1025716347&n=1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2002, 07:22:59 |
|
||
|
MSSQL 2000 Не возвращаются ошибки из хранимых процедур
|
|||
|---|---|---|---|
|
#18+
>Alex Alexeev Вторяя ссылка моя, КАА - это мой ник, просто если он занят, я регистрируюсь как Underking. :) Даже если это проблема Delphi, было бы крайне неплохо решить ее средствами MSSQL, если конечно это возможо, ибо клиент на делфи пишу не я. По крайней мере я должен убедиться, что средствами MSSQL проблему решить нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2002, 09:33:34 |
|
||
|
MSSQL 2000 Не возвращаются ошибки из хранимых процедур
|
|||
|---|---|---|---|
|
#18+
А первая ссылка - моя :)) Я тоже долго с этим воевал, но к счастью клиента пишет товарищ за соседним столом. А если так необходимо решить это в хранимке, то генери ошибки ДО выполнения операций изменения данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2002, 09:43:44 |
|
||
|
MSSQL 2000 Не возвращаются ошибки из хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Клиент тоже товаищ за соседним столом, но от меня хотят, чтоб сервер делал как можно больше, а клиент как можно меньше. Собственно говоря у меня из одной процедуры вызывается толпа других. И ошибки уже не возвращаются из других процедур. INSERT отработал и все хорошо, но ошибка произошла уже в другой процедуре. Если вызов процедуры с INSERT убрать, то там ошибка попадет клиенту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2002, 10:30:01 |
|
||
|
MSSQL 2000 Не возвращаются ошибки из хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Может попробовать на выходе каждой процедуры возвращать параметр, который бы сигнализировал об успешном/неуспешном выполнении процедуры, типа returns 0 - нет ошибки, > 0 - ошибка (ее код) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2002, 10:33:05 |
|
||
|
MSSQL 2000 Не возвращаются ошибки из хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Вообщем многие процедуры у меня возвращают какие-либо данные, по которым можно сделать вывод, отработала ли процедура. Но там есть масса проверок, каждая из которых генерит свое сообщение об ошибке. Его бы и вернуть. Кроме того ошибка несколько в другом. После выполнения процедуры с INSERT, сообщения об ошибке вообще перестают возвращаться как из вызываемых процедур, так и из вызывающих. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2002, 10:53:24 |
|
||
|
MSSQL 2000 Не возвращаются ошибки из хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Эта проблема лечится простановкой SET NOCOUNT ON в начале хранимой процедуры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2002, 10:55:29 |
|
||
|
MSSQL 2000 Не возвращаются ошибки из хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Тогда еще один вопрос, как можно сделать чтоб не появлялся варнинг "Warning: Null value is eliminated by an aggregate or other SET operation". А то его клиентское приложение как ошибку в try .. except перехватывает. Нужно чтоб просто MSSQL не выдавал это сообщение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2002, 11:26:24 |
|
||
|
MSSQL 2000 Не возвращаются ошибки из хранимых процедур
|
|||
|---|---|---|---|
|
#18+
А это скорее всего происходит вычисление агрегатной функции на столбцах, которые содержат NULL. Можно использовать SET ANSI_WARNINGS OFF, но тогда отключится вывод и некоторых других предупреждений Можно проверять текущее значение с помощью ISNULL() А можно поменять структуру таблицы добавив констрайнты на NOT NULL и/или прописав значения по-умолчанию (0 ?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2002, 11:40:46 |
|
||
|
MSSQL 2000 Не возвращаются ошибки из хранимых процедур
|
|||
|---|---|---|---|
|
#18+
В связи с особенностями моей базы, NULL - допустимое значение и оно вполне может попадать в некоторые функции, не нарушая при этом логику работы программы. Надо чтоб просто не выскакивало сообщение. Учитывая что других варнингов у меня как правило не выскакивает, наверно и имеет смысл все отключить. Или черевато чем-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2002, 11:53:38 |
|
||
|
MSSQL 2000 Не возвращаются ошибки из хранимых процедур
|
|||
|---|---|---|---|
|
#18+
IMHO лучше отключать только в конкретных процедурах посколько например "When ON, divide-by-zero and arithmetic overflow errors cause the statement to be rolled back and an error message is generated. When OFF, divide-by-zero and arithmetic overflow errors cause null values to be returned." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2002, 11:57:16 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32035293&tid=1821984]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 348ms |

| 0 / 0 |
