Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Топ:
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Интересное:
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Для версий Oracle 8.0 и предшествующих хранимые функции, принадлежащие пакетам, должны иметь в своем описании явное указание качества изменений (purity level), определяемого для функции. Начиная с версии 8.1, если такое указание отсутствует, оно будет проверяться PL/SQL-машиной автоматически во время выполнения программы или же их могут восполнять другие указания типа DETERMINISTIC или PARALLEL_ENABLED.
Синтаксис указания качества изменений в пакетной функции:
PRAGMA RESTRICT_REFERENCES (имя_программы | DEFAULT, качество_изменений);
Ключевое слово DEFAULT распространяет указываемый уровень качества изменений на все программы в пакете или все методы объектных типов.
Каждый из пяти имеющихся уровней качества изменений характеризует определенную степень свободы подпрограммы от побочных эффектов:
| Purity level | Описание | Степень ограничения в программном коде |
| WNDS | Write No Database State | Отсутствуют операции INSERT, UPDATE, DELETE |
| RNDS | Read No Database State | Отсутствуют операции SELECT |
| WNPS | Write No Package State | Не делаются изменения переменных пакета |
| RNPS | Read No Package State | Отсутствуют обращения к переменным пакета |
| TRUST | Сообщение компилятору “поверить” продекларированному уровню качаства изменений “на слово” и не отрабатывать специальных действий, ограждающих от побочных эффектов |
(Уровень TRUST имеется только начиная с версии 8.1).
Для разных мест использования в SQL пакетной функции требуется иметь различный минимальный уровень качества производимых изменений:
- для использования в SQL-предложениях вообще, все хранимые функции должны быть странслированы с указанием WNDS
- все функции, используемые не в SELECT, VALUES или SET, должны быть странслированы с указанием WNPS
- чтобы иметь возможность быть вызванной с удаленного сервера, функция должна быть странслирована с указанием RNPS
- чтобы иметь возможность быть обработанной параллельно, функция должна быть странслирована с указанием одновременно четырех главных уровней (WNDS, RNDS, WNPS, RNPS) или PARALLEL_ENABLED (в Oracle 8.1)
- функция не должна обращаться к подпрограммам, имеющим более низкий уровень качества изменений
- в Oracle 7 в случае, если пакет содержит раздел инициализации, он также должен быть помечен определенным уровнем качества изменений
- подменяемые (overloaded) функции не обязаны иметь одинаковый уровень качества изменений, но должны иметь его (возможно, каждая – свой) все из них
Не все системные пакеты в Oracle имеют продекларированный уровень WNPS или RNPS (например, пакеты DBMS_OUTPUT, DBMS_PIPE, DBMS_SQL), и поэтому использование подпрограмм из них в SQL имеет свои ограничения.
Разрешение конфликта имен столбцов и функций
Если функция без параметров и ее имя совпадает с именем столбца, конфликт имен в SQL-предложениии будет разрешен в пользу столбца. Для того, чтобы поменять решение Oracle в пользу функции, достаточно уточнить ее имя именем схемы, например:
CREATE FUNCTION ename RETURN VARCHAR2 AS BEGIN RETURN ‘I am a function’; END;
/
-- прочитается как имя столбца:
SELECT ename FROM emp;
-- прочитается как имя функции:
SELECT scott.ename FROM emp;
К сожалению допускается конфликт между именами отдельно странслированной функцией и пакетированной. Он разрешается в пользу пакетированной:
CREATE OR REPLACE PACKAGE scott IS FUNCTION ename RETURN varchar2; END scott;
/
CREATE OR REPLACE PACKAGE BODY scott IS
FUNCTION ename RETURN varchar2 IS BEGIN RETURN 'I am a package function'; END ename;
END scott;
/
-- теперь прочитается как имя пакетированной функции:
SELECT scott.ename FROM DUAL;
В отдельных случаях замаскировать самостоятельную функцию ENAME можно и не создавая пакета:
DROP PACKAGE scott;
CREATE TABLE scott AS SELECT * FROM emp;
-- функция ENAME снова не видна:
SELECT scott.ename FROM scott;
Табличные функции в SQL
Табличными в PL/SQL называются функции, принимающие в качестве аргумента коллекции и/или возвращающие коллекции. Их определение и способ обращения к ним из SQL-предложения имеют свои особенности. Более предметно будут рассмотрены после темы «Коллекции».
|
|
|
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!