Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Топ:
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Основы обеспечения единства измерений: Обеспечение единства измерений - деятельность метрологических служб, направленная на достижение...
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Интересное:
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Дисциплины:
2022-12-20 | 17 |
5.00
из
|
Заказать работу |
|
|
Следующие указания могут использоваться в предложениях CREATE PROCEDURE и CREATE FUNCTION (версия 8.1):
OR REPLACE
Если подпрограмма уже существует, она будет перетранслирована с сохранением имеющихся свойств
AUTHID
Указывает на то, будет ли выполнение подпрограммы осуществляться с правами пользователя, подпрограмму создавшего (DEFINER), или пользователя, к программе обратившегося (CURRENT_USER). До версии Oracle 8.1 последним качеством обладали лишь подпрограммы из системных пакетов DBMS_SQL и DBMS_UTILITY. Пример использования указания см. ниже.
DETERMINISTIC
Сообщает компилятору, что значение функции определяется исключительно значениями ее параметров (то в теле не используются обращения к глобальным переменным пакета или к полям базы данных). В этом случае PL/SQL-машина может оптимизировать вычисление функции при повторяющихся вызовах, подменяя собственно вычисление обращениями к ранее вычисленным значениям, хранимым в пределах сеанса. Обязательный (а не оптимизационный) характер указание DETERMINISTIC имеет для возможности функции быть использованой в выражении для индекса, построенного на функции (function-based index) или же в SQL-формулировке материализованной выводимой таблицы, созданной в режимах REFRESH FAST или ENABLE QUERY REWRITE.
PARALLEL_ENABLED
Подсказка оптимизатору, что вычисление функции, если она вызвана в теле запроса SQL, может быть распараллелено в случае использования параллельной обработки запросов, то есть в ней нет обращений к переменным сеанса (например, глобальным переменным пакета).
PIPELINED
Может использоваться для описания табличной функции, то есть функции, принимающей на входе набор строк и выдающей в качестве результата тоже набор. Если такая функция странслирована с указанием PIPELINED, результат начинает выдаваться построчно по мере формирования в теле функции, а не после полного подсчета всего набора строк. При этом в теле функции строки созвращаются индивидуально оператором PIPE ROW имя_записи, а не RETURN результат, как обычно. Действует с версии 9. Примеры см. ниже.
|
AGGREGATE
Используется для написания собственных обобщающих (агрегатных) функций (вдобавок к стандартным MIN, MAX и т. д.). Действует с версии 9.
Хранимые подпрограммы и привилегии доступа к данным в БД
Две логики реализации привилегий доступа к данным БД
Задаются указанием AUTHID DEFINER, либо AUTHID CURRENT_USER. Содержательный пример использования логики «права доступа соответствуют правам обратившегося к подпрограмме»:
CREATE OR REPLACE FUNCTION countme (tabula IN VARCHAR2) RETURN NUMBER
AUTHID CURRENT_USER
AS
cnt NUMBER;
BEGIN
EXECUTE IMMEDIATE 'SELECT COUNT (*) FROM ' || tabula INTO cnt;
RETURN cnt;
END;
/
Упражнение. Создать функцию COUNTME как описано выше и проверить в работе из «своей» и «чужой» схемах. Заменить AUTHID CURRENT_USER на AUTHID DEFINER и повторить опыт.
Содержательный пример использования логики «права доступа соответствуют правам создателя подпрограммы» для получения полного имени трассировочного файла текущего сеанса:
CREATE OR REPLACE FUNCTION trace_file_name RETURN VARCHAR2 AUTHID DEFINER
IS
fname VARCHAR2(256);
BEGIN
SELECT param.value || '\' || i.instance_name || '_ora_' || p.spid || '.trc' INTO fname
FROM v$parameter param, v$instance i, v$process p, v$session s
WHERE s.sid = (SELECT sid FROM v$mystat WHERE ROWNUM = 1)
AND s.paddr = p.addr
AND param.name = 'user_dump_dest';
RETURN fname;
END;
/
(Здесь для пути к файлу употреблен разделитель файловой системы Windows).
Упражнение. Создать процедуру от имени SYSTEM (или SYS). Выдать в SQL*Plus:
GRANT EXECUTE ON trace_file_name TO PUBLIC;
CREATE PUBLIC SYNONYM trace_file_name FOR trace_file_name;
Проверить работу функции, включая для этого трассировку разных сеансов.
Обратите внимание, что «права создателя» дают возможность разрешать пользователям работать с таблицами БД, не предоставляя непосредственных привилегий доступа к ним. Таким образом они дают еще одну возможность регламентировать доступ к таблицам в БД в дополнение, например, к механизму views.
|
|
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!