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