![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проверка правильности выполнения оператора INSETR INTO ... [D6, Oracle]
Chak © (2002-10-31 23:51:00)Иногда во время ставки даных с помощью SQL, возникают ошибки. Вопрос, как можна проверить выполнен SQL с ошибками или нет и потом реагировать на результат проверки?
У меня ORACLE 9i, ODAC3.50.
В таблице порядка 70 полей для вставки.
Добавление записи в таблицу происходит по мере надхода данных. Мне нужно чтобы в случае возникновения ошибки я получал сообщение, соответственно нужно поймать момент ее возникновения. КАК?
Yarus (2002-11-01 12:42:00) [1]begin
INSERT INTO () Values ()
chak (2002-11-01 12:34:00) [2]==> Sergey13 © (01.11.02 12:03)
Ни с elseни без него - никак, впечатление такое что в
except непопадаю!!!
Sergey13 (2002-11-01 12:03:00) [3]2chak © (01.11.02 11:27)
Если тебе не важен собственно код ошибки то может так
try
DM.ADD.Execute;
except
else
ShowMessage("Вот какая-то ошибка возникла");
end;
perov (2002-11-01 11:57:00) [4]попробуй так
try
DM.ADD.Execute;
except
ShowMessage("Вот такая-то ошибка возникла");
end;
а на оракле исключение можно сделать так
Raise_application_error(-20000, "ошибка");
при этом на клиенте выскакивает ошибка...
chak (2002-11-01 11:42:00) [5]Неужели никто не поможет?
особенно жду ответов от Yarus? perov!
chak (2002-11-01 11:27:00) [6]Всеравно ничего у меня не выходит!!! Не могу поймать ошиюбку,
Вот код:
try
DM.ADD.Execute;
except
on e: EOraError do
case e.ERRORCODE OF
01401: begin //нужно просто показать сообщение о возникшей ошибке!
ShowMessage("Вот такая-то ошибка возникла");
end;
end;
end;
==> Yarus (01.11.02 11:05)
exception
When <ошибка> then
<операторы. здесь можно кидать сообщение клиенту или вести обработку>
... можна поподробнее в этом месте, особенно как кинуть сообщение клиенту и поймать его(вивести сообщение)!
...
...
end;
Yarus (2002-11-01 11:05:00) [7]Я думаю что такие вещи лучше обрабатывать самим Oracle будет и быстрей и надежней.
Можно заюзать обычный блок
begin
/* действие*/
exception
When <ошибка> then
<операторы. здесь можно кидать сообщение клиенту или вести обработку>
...
...
...
end;
chak (2002-11-01 11:02:00) [8]нашол что нужно в usesто дописать - OraError!
Буду проверять, спасибо,
chak (2002-11-01 10:41:00) [9]==> perov © (01.11.02 10:31)
Компилятор Delphi не знает что такое EOraError
Что нужно добавить в раздел usesчтоб он не ругался?
perov (2002-11-01 10:31:00) [10]....
except
on e: EOraError do
case e.ERRORCODE OF
// список кодов см в доке
end
Val (2002-11-01 10:31:00) [11]>Chak © (01.11.02 10:16)
Да я так и делаю, но у мен не срабатывает тот код который стоит после except!
о каких ошибках речь?
В секцию except попадаете, может стоит показать код целиком?
>Hawk2 (01.11.02 10:25)
не смешите :)
Hawk2 (2002-11-01 10:25:00) [12]Народ, а в ORACLE поддерживаются транзакции?
Chak (2002-11-01 10:16:00) [13]==> perov © (01.11.02 07:58)
вставка ОДАКом
try
OraQuery{OraSql}.Sql.Text := "insert into....";
OraQuery{OraSql}.Exec;
except
здесь обрабатываешь ошибку вставки
end;
Да я так и делаю, но у мен не срабатывает тот код который стоит после except!
CODE>
...
except
здесь обрабатываешь ошибку вставки как правильно ее тут поймать?
end;
perov (2002-11-01 07:58:00) [14]если вставка на оракле:
begin
insert into....;
exception
здесь обрабатываешь ошибку вставки
end;
вставка ОДАКом
try
OraQuery{OraSql}.Sql.Text := "insert into....";
OraQuery{OraSql}.Exec;
except
здесь обрабатываешь ошибку вставки
end;