Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
34
Добавлен:
17.04.2018
Размер:
189.44 Кб
Скачать

Вызов процедур и функций

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

• Типы данных фактических параметров должны совпадать с типами данных соответствующих формальных параметров или допускать преобразование в них.

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

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

имя_процедуры();

или

имя_процедуры;

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

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

имя_процедуры(факт_парам_1,

факт_парам_2,

факт_парам_N) ;

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

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

имя_процедуры(форм_парам_1 => факт_парам_1,

форм_парам_2=> факт_парам_2,

)

;

Это называется именованной нотацией (named notation) вызова функций и процедур. Приведенная ранее нотация называется позиционной (positional), поскольку сопоставление параметров основано на их позиции в списке.

К функциям применимы те же методы вызова. Однако функции могут появляться внутри других выражений и, соответственно, не иметь в конце точки с запятой. Можно смешивать две нотации, но позиционный список должен предшествовать нотационному в списке параметров.

5.5. Переменные и константы pl/sql

Переменные могут содержать информацию (данные) различных видов. В зависимости от того, какую информацию в них можно помещать, они имеют различные типы данных, а чтобы отличать их друг от друга, им присваиваются имена. Содержимое переменных можно менять в ходе выполнения PL/SQL-операторов.

Объявление переменных pl/sql

Синтаксис объявления переменной в PL/SQL может иметь любую из следующих форм:

имя_переменной тип_данных [[NOT NULL] := выражение_по_умолчанию];

имя_переменной тип_данных [[NOT NULL] DEFAULT выражение_по_умолчанию];

Имя_переменной — это любой правильный идентификатор PL/SQL. Правильный идентификатор PL/SQL должен:

• иметь не более 30 символов в длину и не содержать пробельных символов (собственно пробелов и знаков табуляции);

• состоять только из букв, цифр от 0 до 9, символа подчеркивания ( _ ), знака доллара ($) и знака фунта (#);

• начинаться с буквы;

• не совпадать с зарезервированными словами PL/SQL или SQL, которые имеют специальное значение. Например, именем переменной не может быть слово BEGIN, которое обозначает начало выполняемой секции базового блока PL/SQL.

Тип_данных — это любой допустимый тип данных SQL или PL/SQL. Дополнительная информация о типах данных приведена в следующем разделе.

Модификатор NOT NULL требует, чтобы переменная имела значение. Если он указан, переменной должно быть присвоено значение по умолчанию.

Создаваемой переменной можно присвоить значение по умолчанию, заданное соответствующим выражением. Это просто сокращенный способ присваивания значений переменным.

В языке SQL Oracle предусмотрены типы данных NUMBER, VARCHAR2 и DATE. Кроме них PL/SQL имеет дополнительные типы данных, отсутствующие в SQL.

Соседние файлы в папке Lab5