Oracle Forms Execute_query, выдающий ошибку FRM-40737

Я получаю ошибку

FRM - 40737 - недопустимая ограниченная процедура GO_BLOCK в триггере WHEN-VALIDATE-RECORD.

Мой код

IF event_name = 'WHEN-VALIDATE-RECORD'
      THEN
         IF (form_name = 'OEXOEORD' AND block_name = 'ORDER')
         THEN
            -- call procedure to validate and cascade the ship method code.
            cascade_ship_method;
         execute_query;
         END IF;

Что я здесь не так делаю?

1 ответ

Это связано с тем, что в Oracle Forms есть два типа встроенных процедур - ограниченные и неограниченные. Некоторые триггеры включают ограниченные процедуры, некоторые нет (см. Справку Oracle Forms, каждый триггер имеет информацию о том, какие процедуры он включает).

Триггер WHEN-VALIDATE-ITEM срабатывает, например, когда пользователь перемещает курсор от одной записи к другой (это называется навигацией). В этом случае он оставляет одну запись и вводит другую. Срабатывает следующая цепочка триггеров

  • КОГДА-VALIDATE-ITEM
  • КОГДА-VALIDATE-RECORD
  • POST-ITEM
  • POST-RECORD
  • PRE-RECORD
  • PRE-ITEM

В случае сбоя любого из этих триггеров навигация отменяется, и курсор возвращается к исходному элементу. Если вы вызываете любую процедуру, которая запускает новую навигацию (например, GO_BLOCK), Oracle Forms не сможет управлять первой навигацией.

Вот почему некоторые процедуры ограничены.

Это может быть связано с содержанием cascade_ship_method, Когда я получил эту ошибку, я пропустил апостроф в SET_BLOCK_PROPERTY заявление. Когда я починил, все заработало. Это правильная структура в моем блоке кода:

SET_BLOCK_PROPERTY (
                  'TABLE_A',
                  default_where,
                     'column_a= '
                  || ''''
                  || variable
                  || '''');
Другие вопросы по тегам