Oracle
Платформа Oracle поддерживает инструкции ALTER FUNCTION и CREATE FUNCTION, ALTER PROCEDURE и CREATE PROCEDURE. (Возможно, вы захотите узнать о пакетах Oracle, которые также можно применять для создания пользовательских функций и записанных процедур. Обращайтесь к документации Oracle.) Синтаксис инструкции CREATE PROCEDURE в Oracle следующий.
CREATE [OR REPLACE] {FUNCTION | PROCEDURE) [схема] имя_объекта [(параметр1 [IN | OUT | IN OUT] [NOCOPY] тип_данных] [, …])]] RETURN тип_данных
[DETERMINISTIC] [AUTHID {CURRENTJJSER | DEFINER}]
[PARALLEL_ENABLE [(PARTITION имя_раздела BY {ANY | (HASH | RANGE)
[столбец [, …]) [{ORDER | CLUSTER) BY (столбец [, …])]] {[PIPELINED | AGGREGATE] USING [схема.]тип_реализации] |
[PIPELINED] {IS | AS) > {блок_кода | LANGUAGE {JAVA NAME имя_внешней_программы |
С [NAME имя_внешней_программы]
LIBRARY имя_библиотеки [AGENT IN (аргумент [, …]) LWITH CONTEXT] [PARAMETERS (параметр [, …])]};
Инструкции ALTER FUNCTION и ALTER PROCEDURE, показанные ниже, используются для перекомпиляции неверно составленных пользовательских функций и записанных процедур.
ALTER {FUNCTION | PROCEDURE} [схема.]имя_объекта COMPILE [DEBUG] [параметры_компиляции=value […]] [REUSE SETTINGS]
Ниже приводится описание параметров.
CREATE [OR REPLACE] FUNCTION [схема.] имя_объекта
Создается новая пользовательская функция или записанная процедура. Используйте предложение OR REPLACE, чтобы заменить существующую процедуру или функцию без предварительного ее удаления и последующего переназначения всех связанных с ней допусков. Некоторые предложения используются только с пользовательскими функциями, в том числе предложения RETURN, DETERMINISTIC и все варианты предложения USING.
[IN | OUT | IN OUT]
Определяет, является ли параметр для функции входным, выходным или и тем и другим одновременно.
NOCOPY
Этот параметр увеличивает производительность, если аргумент типа Ос/Гили IN OUT очень велик (например, относится к типу VARRA Y или RECORD).
AUTHID (CURRENTUSER DE FINER}
Принудительно определяет запуск подпрограммы с допусками текущего пользователя (AUTHID CURRENT_USER) или владельца функции (AUTHID DEF1NER).