Pl/sql (oracle Forms)

Тема в разделе "Остальные БД", создана пользователем KLAYD, 21 июн 2007.

Статус темы:
Закрыта.
  1. KLAYD

    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;
     
Загрузка...
Похожие Темы - sql (oracle Forms)
  1. mrtg
    Ответов:
    0
    Просмотров:
    44
  2. mrtg
    Ответов:
    14
    Просмотров:
    208
  3. Allegro
    Ответов:
    3
    Просмотров:
    110
  4. rhino101
    Ответов:
    0
    Просмотров:
    339
  5. karitsa
    Ответов:
    1
    Просмотров:
    452
Статус темы:
Закрыта.

Поделиться этой страницей