Oracle-style packages were introduced in MariaDB 10.3.5.
 
Syntax
------ 
CREATE [ OR REPLACE ]
 [DEFINER = { user | CURRENT_USER | role | CURRENT_ROLE }]
 PACKAGE BODY
 [ IF NOT EXISTS ]
 [ db_name . ] package_name
 [ package_characteristic... ]
{ AS | IS }
 package_implementation_declare_section
 package_implementation_executable_section
END [ package_name]
 
package_implementation_declare_section:
 package_implementation_item_declaration
 [ package_implementation_item_declaration... ]
 [ package_implementation_routine_definition... ]
 | package_implementation_routine_definition
 [ package_implementation_routine_definition...]
 
package_implementation_item_declaration:
 variable_declaration ;
 
variable_declaration:
 variable_name[,...] type [:= expr ]
 
package_implementation_routine_definition:
 FUNCTION package_specification_function
 [ package_implementation_function_body ] ;
 | PROCEDURE package_specification_procedure
 [ package_implementation_procedure_body ] ;
 
package_implementation_function_body:
 { AS | IS } package_routine_body [func_name]
 
package_implementation_procedure_body:
 { AS | IS } package_routine_body [proc_name]
 
package_routine_body:
 [ package_routine_declarations ]
 BEGIN
 statements [ EXCEPTION exception_handlers ]
 END
 
package_routine_declarations:
 package_routine_declaration ';'
[package_routine_declaration ';']...
 
package_routine_declaration:
 variable_declaration
 | condition_name CONDITION FOR condition_value
 | user_exception_name EXCEPTION
 | CURSOR_SYM cursor_name
 [ ( cursor_formal_parameters ) ]
 IS select_statement
 ;
 
package_implementation_executable_section:
 END
 | BEGIN
 statement ; [statement ; ]...
 [EXCEPTION exception_handlers]
 END
 
exception_handlers:
 exception_handler [exception_handler...]
 
exception_handler:
 WHEN_SYM condition_value [, condition_value]...
 THEN_SYM statement ; [statement ;]...
 
condition_value:
 condition_name
 | user_exception_name
 | SQLWARNING
 | SQLEXCEPTION
 | NOT FOUND
 | OTHERS_SYM
 | SQLSTATE [VALUE] sqlstate_value
 | mariadb_error_code
 

Description
----------- 
The CREATE PACKAGE BODY statement can be used when Oracle
SQL_MODE is set.
 
The CREATE PACKAGE BODY statement creates the package body
for a stored package. The package specification must be
previously created using the CREATE PACKAGE statement.
 
A package body provides implementations of the package
public routines and can optionally have:
package-wide private variables
package private routines
forward declarations for private routines
an executable initialization section
 
Examples
-------- 
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;
$$
CREATE PACKAGE BODY employee_tools AS
 -- package body variables
 stdRaiseAmount DECIMAL(10,2):=500;
 
 -- private routines
 PROCEDURE log (eid INT, ecmnt TEXT) AS
 BEGIN
 INSERT INTO employee_log (id, cmnt) VALUES (eid, ecmnt);
 END;
 
 -- public routines
 PROCEDURE hire(ename TEXT, esalary DECIMAL(10,2)) AS
 eid INT;
 BEGIN
 INSERT INTO employee (name, salary) VALUES (ename,
esalary);
 eid:= last_insert_id();
 log(eid, 'hire ' || ename);
 END;
 
 FUNCTION getSalary(eid INT) RETURN DECIMAL(10,2) AS
 nSalary DECIMAL(10,2);
 BEGIN
 SELECT salary INTO nSalary FROM employee WHERE id=eid;
 log(eid, 'getSalary id=' || eid || ' salary=' ||
nSalary);
 RETURN nSalary;
 END;
 
 PROCEDURE raiseSalary(eid INT, amount DECIMAL(10,2)) AS
 BEGIN
 UPDATE employee SET salary=salary+amount WHERE id=eid;
 log(eid, 'raiseSalary id=' || eid || ' amount=' ||
amount);
 END;
 
 PROCEDURE raiseSalaryStd(eid INT) AS
 BEGIN
 raiseSalary(eid, stdRaiseAmount);
 log(eid, 'raiseSalaryStd id=' || eid);
 END;
 
BEGIN
 -- This code is executed when the current session
 -- accesses any of the package routines for the first time
 log(0, 'Session ' || connection_id() || ' ' ||
current_user || ' started');
END;
$$
 
DELIMITER ;
 


URL: https://mariadb.com/kb/en/create-package-body/