Теория для лабораторной работы №5 - "PL/SQL – курсоры и хранимые процедуры", страница 16

Примечание по использованию

Когда вы убираете функцию, Oracle7 обновляет любые локальные объекты, которые зависят от или вызывают убираемую функцию.

Если вы впоследствии ссылаетесь на один из этих объектов, Oracle7 пытается перекомпилировать объект и возвращает сообщение об ошибке, если вы не воссоздали убранную функцию.

Вы можете использовать эту команду только для убирания уникальной функции. Для убирания функции, которая является частью пакета, используйте один из следующих методов:

убрать весь пакет, используя команду DROP PACKAGE.

переопределить пакет без функции, используя команду CREATE PACKAGE с опцией OR REPLACE.

Пример.

Следующая инструкция убирает функцию NEW_ACCT в схеме RIDDLEY:

DROP FUNCTION riddley.new_acct

CREATE PROCEDURE

Назначение команды: создаёт уникальную хранимую процедуру.

Процедура – это группа выражений PL/SQL, которые вы можете вызывать по имени.

 

Требования к использованию: чтобы создать процедуру в вашей собственной схеме, вы должны иметь системную привилегию CREATE PROCEDURE. Чтобы создать процедуру в другой схеме, вы должны иметь системную привилегию CREATE ANY  PROCEDURE. Чтобы заменить процедуру в другой схеме, вы должны иметь системную привилегию REPLACE ANY  PROCEDURE.

 

Синтаксис:

 

 

Ключевые слова и параметры.

OR REPLACE

воссоздаёт процедуру, если она уже существует. Вы  можете использовать эту опцию для изменения определения уже существующей процедуры без убирания, воссоздания и переопределения уже назначенных прав объекта. Если вы переопределяете процедуру , Oracle7 перекомпилирует её.

Пользователи, которым до этого были даны права на переопределяемую процедуру по-прежнему могут её использовать без переназначения прав.

Schema

схема, содержащая процедуру. Если вы опустите  schema, Oracle7 создает процедуру в вашей текущей схеме.

Procedure

имя создаваемой процедуры.

Argument

имя аргумента процедуры. Если процедура не принимает аргументы, вы можете опустить скобки, следующие за именем процедуры.

IN

указывает, что вы должны определит значение аргумента, когда вызываете процедуру.

OUT

указывает, что процедура передаёт значение аргумента назад в вызвавшее её окружение после выполнения.

IN OUT

указывает, что вы должны определит значение аргумента, когда вызываете процедуру и процедура передаёт значение аргумента назад в вызвавшее её окружение после выполнения

Если вы опустите IN, OUT, и IN OUT, по умолчанию принимается IN.

datatype

тип данных аргумента. Так как не используется спецификатора длины, аргумент может иметь любой тип данный, поддерживаемый PL/SQL. Типы данных указываются без длины, точности или масштаба. Например, VARCHAR2(10) недопустимо, а VARCHAR2 - правильно. Oracle7 определяет длину, точность или масштаб аргумента из окружения, из которого процедура была вызвана.

pl/sql_subprogram_body

определение процедуры. Определение процедуры пишется на PL/SQL.