Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.21;
Скачать: CL | DM;

Вниз

Проверка правильности выполнения оператора 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
1-69331
Gogi
2002-11-12 00:18
2002.11.21
Установка компонентов


1-69269
VJar
2002-11-11 22:36
2002.11.21
Связь кнопок формы м кнопками клавиатуры


4-69617
Alex_win
2002-10-10 10:09
2002.11.21
приостановить приложение


14-69575
AL2002
2002-11-01 15:50
2002.11.21
Как пользоваться SoftIce?


6-69473
IronHawk
2002-09-25 23:18
2002.11.21
Передача данных потоком по сети ...