Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
4-69631
Saninsky
2002-10-10 19:45
2002.11.21
Запуск DOS приложений из Delphi


1-69282
Semion
2002-11-09 08:24
2002.11.21
Чтение и запись в файл


1-69390
Roman_Tutov
2002-11-10 13:06
2002.11.21
Многооконное приложение


1-69393
Strumpf
2002-11-09 23:34
2002.11.21
Как изменить высоту элемента TMenuItem?


14-69540
Программист
2002-11-03 19:40
2002.11.21
Доменные имена





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский