СОЗДАНИЕ ПАКЕТА
Пакеты в стиле Oracle были введены в MariaDB 10.3.5.
Синтаксис
CREATE
[ OR REPLACE]
[DEFINER = { user | CURRENT_USER | role | CURRENT_ROLE }]
PACKAGE [ IF NOT EXISTS ]
[ db_name . ] package_name
[ package_characteristic ... ]
{ AS | IS }
[ package_specification_element ... ]
END [ package_name ]
package_characteristic:
COMMENT 'string'
| SQL SECURITY { DEFINER | INVOKER }
package_specification_element:
FUNCTION_SYM package_specification_function ;
| PROCEDURE_SYM package_specification_procedure ;
package_specification_function:
func_name [ ( func_param [, func_param]... ) ]
RETURNS func_return_type
[ package_routine_characteristic... ]
package_specification_procedure:
proc_name [ ( proc_param [, proc_param]... ) ]
[ package_routine_characteristic... ]
func_return_type:
type
func_param:
param_name [ IN | OUT | INOUT | IN OUT ] type
proc_param:
param_name [ IN | OUT | INOUT | IN OUT ] type
type:
Any valid MariaDB explicit or anchored data type
package_routine_characteristic:
COMMENT 'string'
| LANGUAGE SQL
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
Описание
Оператор CREATE PACKAGE может использоваться при установленном Oracle SQL_MODE.
Оператор CREATE PACKAGE создаёт описание хранимого пакета (совокупности логически связанных хранимых объектов). Описание хранимого пакета объявляет общедоступные процедуры и функции пакета, но не реализует их.
Пакет, описание которого было создано оператором CREATE PACKAGE, должен быть позже реализован с помощью оператора CREATE PACKAGE BODY.
Квантификаторы параметров функций IN | OUT | INOUT | IN OUT
Квантификаторы параметров функций IN, OUT, INOUT, и IN OUT были добавлены в предварительной версии 10.8.0. До версии 10.8.0 квантификаторы поддерживались только в процедурах.
OUT, INOUT и его эквивалент IN OUT, действительны только при вызове из SET, а не из SELECT. Эти квантификаторы особенно полезны для создания функций и процедур с несколькими значениями возврата. Это позволяет создавать более сложные и вложенные функции и процедуры.
Примеры
SET sql_mode=ORACLE; DELIMITER $$ CREATE OR REPLACE PACKAGE employee_tools AS FUNCTION getSalary(eid INT) RETURN DECIMAL(10,2); PROCEDURE raiseSalary(eid INT, amount DECIMAL(10,2)); PROCEDURE raiseSalaryStd(eid INT); PROCEDURE hire(ename TEXT, esalary DECIMAL(10,2)); END; $$ DELIMITER ;
См. также
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/create-package/