2015-12-18 5 views
0

У меня есть этот код в триггере когда-Validate-позиционногооракул форма 10га выполнение таймаут

declare 
x number; 
c varchar2(5); 
n varchar2(25); 
begin 
select COUNT(*) into x from CUSTOMERS where CUSTOMERS.cus_name=:output_header.text_item48; 
if x > 0 
    then 
    NULL; 
else 
    IF SHOW_ALERT('ALERT56')= ALERT_BUTTON1 THEN 
    select to_char(max(customers.cus_id)+1) into c from customers; 
    n:=to_char(:output_header.text_item48); 
    insert into customers(cus_id,cus_name) values(c,n); 
    end if; 
END IF; 
end;' 

этот код должен проверить, если имя клиента введен уже существует, если я не хочу, чтобы создать новый клиент проблема заключается в том, что когда я нажимаю кнопку предупреждения1, вместо того, чтобы вставлять нового клиента (запись) в таблицу клиентов, форма не реагирует навсегда Можете ли вы, пожалуйста, помочь мне, проблема в заявлении вставки; заранее спасибо

+1

Вы пытались добавить блок исключения, чтобы поймать любое возможное исключение ? – pablomatico

+0

В идеале вы должны создать процедуру в форме или создать процедуру хранения базы данных и вызвать или вызвать процедуру из триггера 'when-validate-item'. Упомянув это, ваша ошибка не имеет ничего общего с процедурой. – user75ponic

ответ

0

Кажется: output_header.text_item48 уже голец пункт поэтому нет необходимости конвертировать с помощью to_char, тест с помощью следующего кода:

declare 
x number; 
c varchar2(5); 
n varchar2(25); 
begin 
select COUNT(*) into x from CUSTOMERS where CUSTOMERS.cus_name=:output_header.text_item48; 
if x > 0 
    then 
    NULL; 
else 
    IF SHOW_ALERT('ALERT56')= ALERT_BUTTON1 THEN 
    select to_char(max(customers.cus_id)+1) into c from customers; 
    n:= :output_header.text_item48; 
    insert into customers(cus_id,cus_name) values(c,n); 
    commit; 
    end if; 
END IF; 
end;