Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];

Вниз

Помогите обработать ошибку   Найти похожие ветки 

 
ruslan_as   (2003-07-17 16:48) [0]

Помогите разобраться с обработкой ошибки. Клиентом заносится записи в базу данных Oracle. При нарушении уникальности выскакивает ошибка ORA-00001. Как обработать эту ошибку и запустить вместо нее свою процедуру (MyProcedure).

Спасибо всем отозвавшимся!


 
Skier   (2003-07-17 16:52) [1]

Наверняка есть какое-то событие у компонента для работы с Oracle, которое вызывается в случае ошибки.


 
Толик   (2003-07-17 16:56) [2]

Обработать ошибку где: на сервере, на клиенте? Запустить процеду где: на сереве, на клиенте? Как заносятся данные (через insert или через вызов stored procedure)? Вставка данных идёт непосредственно в таблицу или через updatable view? Ну и т.д.


 
ruslan_as   (2003-07-17 17:08) [3]

>>Толик
Ошибку обработать в приложении у клиента. Процедура (или какой-нибудь ShowMessage - потом придумаю) в приложении клиента. Вставка непосредственно в таблицу.


 
Skier   (2003-07-17 17:11) [4]

>ruslan_as © (17.07.03 17:08)
А try-except-end не подходит ?


 
Толик   (2003-07-17 17:11) [5]

Серверный вариант:

begin
insert into Table_Name(
Field_Name
)
values(
Some_Values
);
exception
when dup_val_on_index then
MyProcedure();
end;

Клиентский вариант:

var
ErrNo: longint;
TmpStr: string;
begin
try
Query1.ExecSQL();
except
on E: EDatabaseError do begin
Copy(E.Message, 4, 6); //используем то св-во оракловых сообщений, что все они начинаются с номера ошибки "ORA-XXXXX"
ErrNo := StrToInt(TmpStr)
if ErrNo = -00001 then
MyProcedure();
end;
end;
end;

код писал напрямую, так что возможны опечатки.


 
Толик   (2003-07-17 17:16) [6]

Сорри, не видел дальнейших сообщений, так что вариант 2.
А как передаётся запрос на сервер? Если через какие-то сторонние компаненты, то м.б. у них есть свои методы обработки ошибок? Например у Direct Oracle Access есть компонент TOracleEvent с событием возникновения серверных исключений.


 
ruslan_as   (2003-07-17 17:48) [7]

Спасибо Толик!
Там маленькая помарка TmpStr:=Copy(E.Message, 5, 5) а то ругается на StrToInt. А так уже работает.



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2003.08.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.01 c
14-10379
OHP
2003-07-17 01:04
2003.08.04
Расказик...


3-10103
anatolyk
2003-07-11 22:47
2003.08.04
Автоинкр. поля в MSSQL


1-10279
mmm
2003-07-21 21:40
2003.08.04
как работать с ShellListView ?


3-10111
Duce
2003-07-09 09:51
2003.08.04
Через чего лучше заходить на MS SQL из Дельфи?


14-10400
Rulja
2003-07-17 13:19
2003.08.04
Спрятать сервер





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский