Триггеры PL / SQL не будут работать - PullRequest
0 голосов
/ 21 октября 2018

У меня есть приложение Oracle Forms 11 g, работающее на сервере Weblogic.На странице формы / входа в систему по умолчанию есть несколько триггеров PL / SQL, которые просто не сработают.Остальная часть конфигурации кажется успешной.

Может кто-нибудь дать мне указание о том, где начать искать ??Заранее спасибо.

1 Ответ

0 голосов
/ 21 октября 2018

Как следует из их названия, запускает срабатывает, когда что-то запускает их.Например, триггер

  • a WHEN-BUTTON-PRESSED запускается нажатием кнопки
  • a POST-QUERY срабатывает триггер после выполнения запроса в блоке данных
  • aWHEN-NEW-FORM-INSTANCE триггер срабатывает при запуске формы

и так далее.

Поэтому убедитесь, что триггеры действительно сработали.Тот факт, что они у вас есть, не означает, что они будут работать, только потому, что .

Чтобы выяснить это, у вас есть два варианта:

  • запустить форму в режиме отладки:
    • в одном из триггеров (например, в WHEN-NEW-FORM-INSTANCE) установить точку останова, щелкнув правой кнопкой мыши на ее левом поле (вы увидите, что делать дальше)
    • затем запустите форму;тот зеленый значок панели инструментов, который вы используете для его запуска, не должен использоваться, но рядом с ним, с чем-то красноватым на нем
    • , как только выполнение достигает точки останова, это 'Остановимся, вы перейдете в Forms Builder, откроется консоль отладки и позволит вам шаг за шагом пройтись по остальной части кода
    • , и вы будете знать, что происходитто есть, вызваны ли эти триггеры и что они делают
      • , так как вы подозрительны: вы случайно установили какие-то обработчики исключений, которые используют WHEN OTHERS THEN NULL или что-то подобное?Если так, избавьтесь от них.Даже если возникнет исключение (например, NO_DATA_FOUND или TOO_MANY_ROWS, просто чтобы упомянуть два самых популярных и частых), THEN NULL будет скрывать его
  • еще один - для ввода MESSAGE вызовов в триггеры, например

    begin
      message('running WBP trigger: step 1');
      ... the rest of your code goes here
    end;
    

    . При этом сообщение после сообщения будет вызывать "предупреждение "на экране (так как вам нужно будет нажать кнопку ОК, чтобы вы увидели, что он сказал), и вы быстро увидите, какие триггеры сработали, а какие нет.Затем исследуйте это дальше - отладка, описанная ранее, поможет.

Если ничего из этого не поможет, вам придется описать, что происходит, но на этот раз предоставив дополнительную информацию.То, что вы написали, не очень наглядно.В любом случае, удачи.

...