Назначение
Создание заголовка пакета.
 
Синтаксис
CREATE PACKAGE package_name
[<rights clause>]
AS
BEGIN
  [<package_item> ...]
END
<rights clause> ::=
  SQL SECURITY {DEFINER | INVOKER}
<package_item> ::=
    <function_decl>;
  | <procedure_decl>;
<function_decl> ::=
  FUNCTION func_name [(<in_params>)]
  RETURNS <type> [NOT NULL] [COLLATE collation]
  [DETERMINISTIC]
<procedure_decl> ::=
  PROCEDURE proc_name [(<in_params>)]
  [RETURNS (<out_params>)]
<in_params> ::= <inparam> [, <inparam> ...]
<inparam> ::= <param_decl> [{= | DEFAULT} <value>]
<value> ::=  {literal | NULL | context_var}
<out_params> ::= <outparam> [, <outparam> ...]
<outparam>  ::=  <param_decl>
<param_decl> ::= paramname <type> [NOT NULL] [COLLATE collation]
<type> ::= <datatype> | [TYPE OF] domain_name | TYPE OF COLUMN rel.col
<datatype> ::=
    <scalar_datatype> | <blob_datatype>
<scalar_datatype> ::=  См. Синтаксис скалярных типов данных
<blob_datatype> ::= См. Синтаксис типа данных BLOB
 
 
Table 1. Параметры оператора CREATE PACKAGE
| Параметр | Описание | 
| package_name | Имя пакета.Может содержать до 63 символов. | 
| function_decl | Объявление функции. | 
| procedure_decl | Объявление процедуры. | 
| proc_name | Имя процедуры.Может содержать до 63 символов. | 
| func_name | Имя функции.Может содержать до 63 символов. | 
| inparam | Описание входного параметра. | 
| outparam | Описание выходного параметра. | 
| literal | Литерал, совместимый по типу с параметром. | 
| context_var | Любая контекстная переменная, тип которой совместим с типом параметра. | 
| paramname | Имя входного или выходного параметра процедуры/функции.Может содержать до 63 символов.Имя параметра должно быть уникальным среди входных и выходных параметров процедуры/функции, а также её локальных переменных. | 
| datatype | Тип данных SQL. | 
| collation | Порядок сортировки. | 
| domain_name | Имя домена. | 
| rel | Имя таблицы или представления. | 
| col | Имя столбца таблицы или представления. | 
Оператор CREATE PACKAGE создаёт новый заголовок пакета.Имя пакета должно быть уникальным среди имён всех пакетов.
 
Процедуры и функции, объявленные в заголовке пакета, доступны вне тела пакета через полный идентификатор имён процедур и функций (package_name.procedure_name и package_name.function_name). Процедуры и функции, определенные в теле пакета, но не объявленные в заголовке пакета, не видны вне тела пакета.
 
Имена процедур и функций, объявленные в заголовке пакета, должны быть уникальны среди имён процедур и функций, объявленных в заголовке и теле пакета.
 
| Note | 
Желательно чтобы имена хранимых процедур и функций пакета не пересекались с именами хранимых процедур и функций из глобального пространства имен, хотя это и допустимо.Дело в том, что в настоящее время вы не сможете вызвать функцию/процедуру из глобального пространства имён внутри пакета, если в пакете объявлена одноименная функция/процедура.В этом случае всегда будет вызвана процедура/функция пакета. |