![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как отловить 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 .. и т.п.
А вообще в данном случае процедура абсолютно не нужна, достаточно уникального индекса.