Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо