FRM-40735: триггер после вставки вызвал необработанное исключение ora-01722

Я создаю триггер POST-INSERT для блока, когда получаю эту ошибку в Oracle Forms 11gR2

«FRM-40735: триггер после вставки вызвал необработанное исключение ora-01722»

Код триггера POST-INSERT:

Insert into we_group (GROUP_ID, GROUP_SIZE, NRSP_STATUS, GROUP_RECEIVED)
Select DISTINCT GROUP_ID, ('Select COUNT(*) from we_group_hof_k'), 
nrsp_status, sysdate
from we_group_hof_k;

commit_form;

Как решить эту проблему?


person Ramiz Tariq    schedule 09.04.2019    source источник


Ответы (3)


Удалите ', чтобы предотвратить преобразование числа в символ

 Select DISTINCT GROUP_ID, (select COUNT(*) from we_group_hof_k), 
 nrsp_status, sysdate
 from we_group_hof_k;
person user7294900    schedule 09.04.2019

Рассмотрите возможность использования аналитической версии функции COUNT (если версия Forms, которую вы используете, поддерживает ее; 10g — нет, я не могу сказать о 11g):

INSERT INTO we_group (GROUP_ID,
                      group_size,
                      nrsp_status,
                      group_received)
   SELECT DISTINCT GROUP_ID,
                   COUNT (*) OVER (ORDER BY NULL),
                   nrsp_status,
                   SYSDATE
     FROM we_group_hof_k;
person Littlefoot    schedule 09.04.2019

Очевидно, что ORA-01722 возникает из-за попытки вставить строку в кавычках

( 'Select COUNT(*) from we_group_hof_k' ) в числовой столбец ( GROUP_SIZE ).

Итак, прежде всего вам нужно избавиться от этих кавычек и даже от всего подзапроса, поскольку вы уже пытаетесь выбрать из той же таблицы в основном запросе и просто рассматриваете возможность включения вместо этого предложения group by:

Insert Into we_group(group_id, group_size, nrsp_status, group_received)
  Select group_id,Count(1),nrsp_status, sysdate
    From we_group_hof_k
   Group By group_id,nrsp_status;

Наконец, не используйте commit или commit_form внутри триггера POST-INSERT, такое использование там считается незаконным и ограниченным.

person Barbaros Özhan    schedule 09.04.2019