Итак, с помощью прагмы реализуются уровни строгости этапа компиляции. До Огас1е8гдля вызова модульных функций из SQL прагма была обязательнаЭто ограничение смягчено. Если прагма не указана, база данных проверяет уровень строгости функции на этапе ее выполнения.
Это особенно полезно для внешних подпрограмм (написанных, например, на Java или на С). В этом случае компилятор PL/SQL не может проверить уровень строгости, так как не он компилирует функцию (см. главу 12). Следовательно, проверка должна производиться на этапе выполнения подпрограммы.
Проверка происходит только тогда, когда функция вызывается из исполняющего ее SQL-оператора. При наличии прагмы проверка не производится. Следовательно, использование прагмы позволяет сократить время исполнения функции, а также служит для документирования ее поведения.
Предположим, что из удалены прагмы:


Можно, как и раньше, вызывать эти функции из SQL:

Если попытаться вызвать в SQL-операторе неверную функцию, Огас-1е8г выдаст сообщение об ошибке "ORA-14551: Cannot perform a DML operation inside a query" (невозможно выполнить операцию DML в запросе). Рассмотрим функцию InsertTemp:

| < Предыдущая | Следующая > |
|---|


