K
KLAYD
В целом задача такова...в форме есть два поля...одно поле это список из 15ти значений, а второе поле текстовое(изначально пустое)...есть кнопка Добавить...выбираю значение из списка жму Добавить и во второе поле должна занестись например цифра 1, выбираю другое значение и жму добавить....во втором поле уже 1,2 и т.д...в итоге получаю в текстовом поле к примеру 1,2,4,5,7
Теперь мне нужно разбить это поле на кусочки и поэлементно сравнить со втором полем где за один раз может быть только одно значение (для того что бы пользователь не мог добавить одно и тоже по второму разу), если какое то число совпадает то выдать ошибку 'Такая запись уже есть!'.
Триггер я написал, но почему то не работает...в чём может быть ошибка?
declare
i number;
de number;
str_help VARCHAR2(200) :=
OP_SVEDEN.POSLED_OTR;
str_help2 VARCHAR2(3) :=
OP_SVEDEN.TIP_PRIK;
begin
errmsg_title ('11', '11Первый') ;
if
OP_SVEDEN.POSLED_OTR is NULL then de:=1;
else
errmsg_title ('111', '111Первый') ;
if
OP_SVEDEN.POSLED_OTR is not NULL then
select instr(','||str_help||',', ','||str_help2||',') into i from PR_TYPE_PR;
if i > 0 then errmsg_title('Ошибка','Такая запись уже существует!');
else de:=1;
errmsg_title ('1', 'Первый') ;
errmsg_title('2',
OP_SVEDEN.POSLED_OTR||'.'||
OP_SVEDEN.TIP_PRIK);
if
OP_SVEDEN.POSLED_OTR =
OP_SVEDEN.TIP_PRIK then i:=0;
else i:=1;
end if;
end if;
end if;
end if;
errmsg_title('3',
OP_SVEDEN.POSLED_OTR);
if de=1 then
errmsg_title('4','Четвёртый');
if
OP_SVEDEN.TIP_PRIK is not null then
if
OP_SVEDEN.POSLED_OTR is not null then
errmsg_title('5','Пятый');
OP_SVEDEN.POSLED_OTR:=
OP_SVEDEN.POSLED_OTR||','||
OP_SVEDEN.TIP_PRIK;
else
OP_SVEDEN.POSLED_OTR:=
OP_SVEDEN.TIP_PRIK;
end if;
end if;
end if;
errmsg_title ('6','Шестой');
end;
errmsg_title я добавил для проверки того как выполняется триггер
Когда добавляю первое значение из списка появляются errmsg_title 11, 3, 4, 6
когда добавляю во второй раз errmsg_title 11, 111
т.е в этом кусочке что то не так и триггер дальше не идёт((
errmsg_title ('111', '111Первый') ;
if
OP_SVEDEN.POSLED_OTR is not NULL then
select instr(','||str_help||',', ','||str_help2||',') into i from PR_TYPE_PR;
if i > 0 then errmsg_title('Ошибка','Такая запись уже существует!');
else de:=1;
Теперь мне нужно разбить это поле на кусочки и поэлементно сравнить со втором полем где за один раз может быть только одно значение (для того что бы пользователь не мог добавить одно и тоже по второму разу), если какое то число совпадает то выдать ошибку 'Такая запись уже есть!'.
Триггер я написал, но почему то не работает...в чём может быть ошибка?
declare
i number;
de number;
str_help VARCHAR2(200) :=

str_help2 VARCHAR2(3) :=

begin
errmsg_title ('11', '11Первый') ;
if

else
errmsg_title ('111', '111Первый') ;
if

select instr(','||str_help||',', ','||str_help2||',') into i from PR_TYPE_PR;
if i > 0 then errmsg_title('Ошибка','Такая запись уже существует!');
else de:=1;
errmsg_title ('1', 'Первый') ;
errmsg_title('2',


if


else i:=1;
end if;
end if;
end if;
end if;
errmsg_title('3',

if de=1 then
errmsg_title('4','Четвёртый');
if

if

errmsg_title('5','Пятый');



else


end if;
end if;
end if;
errmsg_title ('6','Шестой');
end;
errmsg_title я добавил для проверки того как выполняется триггер
Когда добавляю первое значение из списка появляются errmsg_title 11, 3, 4, 6
когда добавляю во второй раз errmsg_title 11, 111
т.е в этом кусочке что то не так и триггер дальше не идёт((
errmsg_title ('111', '111Первый') ;
if

select instr(','||str_help||',', ','||str_help2||',') into i from PR_TYPE_PR;
if i > 0 then errmsg_title('Ошибка','Такая запись уже существует!');
else de:=1;