• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Pl/sql (oracle Forms)

  • Автор темы KLAYD
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

KLAYD

В целом задача такова...в форме есть два поля...одно поле это список из 15ти значений, а второе поле текстовое(изначально пустое)...есть кнопка Добавить...выбираю значение из списка жму Добавить и во второе поле должна занестись например цифра 1, выбираю другое значение и жму добавить....во втором поле уже 1,2 и т.д...в итоге получаю в текстовом поле к примеру 1,2,4,5,7
Теперь мне нужно разбить это поле на кусочки и поэлементно сравнить со втором полем где за один раз может быть только одно значение (для того что бы пользователь не мог добавить одно и тоже по второму разу), если какое то число совпадает то выдать ошибку 'Такая запись уже есть!'.
Триггер я написал, но почему то не работает...в чём может быть ошибка?

declare

i number;
de number;
str_help VARCHAR2(200) := :DOP_SVEDEN.POSLED_OTR;
str_help2 VARCHAR2(3) := :DOP_SVEDEN.TIP_PRIK;

begin
errmsg_title ('11', '11Первый') ;
if :DOP_SVEDEN.POSLED_OTR is NULL then de:=1;
else
errmsg_title ('111', '111Первый') ;
if :DOP_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',:DOP_SVEDEN.POSLED_OTR||'.'||:DOP_SVEDEN.TIP_PRIK);
if :DOP_SVEDEN.POSLED_OTR = :DOP_SVEDEN.TIP_PRIK then i:=0;
else i:=1;
end if;
end if;
end if;
end if;


errmsg_title('3',:DOP_SVEDEN.POSLED_OTR);
if de=1 then
errmsg_title('4','Четвёртый');
if :DOP_SVEDEN.TIP_PRIK is not null then
if :DOP_SVEDEN.POSLED_OTR is not null then
errmsg_title('5','Пятый');
:DOP_SVEDEN.POSLED_OTR:=:DOP_SVEDEN.POSLED_OTR||','||:DOP_SVEDEN.TIP_PRIK;
else
:DOP_SVEDEN.POSLED_OTR:=:DOP_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 :DOP_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;
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!