CREATE PACKAGE
Создание заголовка пакета.
DSQL
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
Параметр | Описание |
---|---|
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
|
Желательно чтобы имена хранимых процедур и функций пакета не пересекались с именами хранимых процедур и функций из глобального пространства имен, хотя это и допустимо.Дело в том, что в настоящее время вы не сможете вызвать функцию/процедуру из глобального пространства имён внутри пакета, если в пакете объявлена одноименная функция/процедура.В этом случае всегда будет вызвана процедура/функция пакета. |