FRM-40735: триггер после вставки поднял необработанное исключение ora-01722 - PullRequest
0 голосов
/ 09 апреля 2019

Я создаю POST-INSERT Trigger on Block, когда получаю эту ошибку в 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;

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

Ответы [ 3 ]

0 голосов
/ 09 апреля 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;
0 голосов
/ 09 апреля 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, это использование считается незаконным и ограничено там.

0 голосов
/ 09 апреля 2019

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

 Select DISTINCT GROUP_ID, (select COUNT(*) from we_group_hof_k), 
 nrsp_status, sysdate
 from we_group_hof_k;
...