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

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

Как отловить Exception [D6, FireBird 1.5]


Koala ©   (2004-08-25 10:52:00) 

Есть ХП для вставки новой запись, она проверяет на наличие дубликата записи, если нет, то запись вставляется, если да то высвечивается предупреждение о вставке дублирующейся записи.
Как отловить в программе это сообщение???

CREATE PROCEDURE PR_INSERT_CITY (
   IN_CITY_NAME VARCHAR(30),
   IN_USER_EDIT VARCHAR(20))
AS
begin
 /* Procedure Text */
 if (not exists(select 1 from tbl_ref_city
                where CITY_NAME = :IN_CITY_NAME)) then
 INSERT INTO TBL_REF_CITY(CITY_NAME, DATE_EDIT, USER_EDIT)
 VALUES (:IN_CITY_NAME, 'NOW', :IN_USER_EDIT);
 else
  EXCEPTION EXC_NO_DBL_INS_CITY;
 suspend;
end


Koala   (2004-08-25 15:10:00) [1]

Спасибо всем... так и сделал...


Skyle   (2004-08-25 14:48:00) [2]


>  [5] LM2   (25.08.04 14:46)

Как настроишь...


LM2   (2004-08-25 14:46:00) [3]

>>Skyle ©
Ага, только с регистром надо быть повнимательнее, а то получаться два города Москва и МОСКВА !!!))))))))


Skyle   (2004-08-25 14:08:00) [4]


> [2] Koala ©   (25.08.04 13:48)

Создать в таблице уникальный индекс, содержащий набор полей, по которым определяется уникальность (в данном случае CITY_NAME).
После этого проверка уникальности записи с таким значением индекса возлагается на СУБД, которая будет генерировать исключение.
И самопальная проверка станет ненужной.


LM2   (2004-08-25 13:55:00) [5]

Да проще возвращать значения, например -1, если такая запись существует!


Koala   (2004-08-25 13:48:00) [6]


> Zacho ©   (25.08.04 11:45) [1]



> А вообще в данном случае процедура абсолютно не нужна, достаточно
> уникального индекса.

Не понял... а можно по подробнее....


Zacho   (2004-08-25 11:45:00) [7]

Так же, как и любой другой txception. RTFM  try .. except .. и т.п.
А вообще в данном случае процедура абсолютно не нужна, достаточно уникального индекса.


Наверх

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