DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Уровни строгости

Для функций существуют четыре различных уровня строгости. строгости (purity level) определяет структуры данных, которые может счи­тывать или модифицировать функция. Эти уровни представлены в табли­це 10.2. В зависимости от уровня строгости функции на нее налагаются следующие ограничения:
•   Функция, вызываемая из SQL-оператора, не может модифициро­вать таблицы базы данных (WNDS). (В Огас1е8г функция, вызывае­мая из оператора, отличного от SELECT, может модифицировать таблицы базы данных; см. ниже раздел "Вызов хранимых функций H3SQLBOracle8f.)
Для того чтобы функция могла быть выполнена дистанционно (с помощью соединения баз данных) или параллельно, она не дол­жна считывать или записывать значения модульных переменных.
Функции, вызываемые из предложений SELECT, VALUES или SET, могут записывать модульные переменные. Функции во всех осталь­ных предложениях должны иметь уровень строгости WNPS.
Функция строга настолько, насколько строги вызываемые ею под­программы. Если функция вызывает хранимую процедуру, которая, к примеру, обновляет информацию (оператор UPDATE), то эта функция не имеет уровня строгости        и, следовательно, не мо­жет быть использована в операторе SELECT.
       Независимо от уровня строгости хранимые функции PL/SQL нельзя вызывать из предложения ограничения CHECK команды CREATE TABLE или ALTER TABLE, а также использовать для указания значе­ния по умолчанию для столбца, так как в этих ситуациях требуется, чтобы определения не изменялись.
кроме приведенных ограничений, функция, созданная пользовате­лем, должна отвечать также дополнительным требованиям, чтобы ее можно было вызывать из SQL-операторов. Заметим, что все встроенные
функции тоже должны отвечать этим требованиям.
       Функция должна храниться в базе данных автономно или как часть модуля. Она не должна быть локальной по отношению к другому блоку.
       Функция может принимать только параметры IN, но не IN OUT или OUT.
Для формальных параметров должны использоваться только те типы, которые применяются в базе данных, но не типы PL/SQL, та­кие как BOOLEAN или RECORD. Типы базы данных — это NUMBER, CHAR, VARCHAR2, ROWID, LONG, RAW, LONG RAW и DATE, а также новые типы Огас1е8г'и Огас1е9г.
Тип, возвращаемый функцией, также должен быть типом базы дан­ных.
Функция не должна заканчивать текущую транзакцию оператором COMMIT или ROLLBACK, либо выполнять откат к точке сохране­ния до своего выполнения.
В функции не должны вызываться команды ALTER SESSION и ALTER SYSTEM.
В качестве примера рассмотрим функцию        входным пара-
метром которой является идентификатор студента и которая возвращает конкатенированные имя и фамилию.
Функция FullName удовлетворяет всем ограничениям, поэтому ее мож­но вызвать из SQL-оператора:

 









jAntivirus