mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
MDEV-32101 CREATE PACKAGE [BODY] for sql_mode=DEFAULT
This patch adds PACKAGE support with SQL/PSM dialect for sql_mode=DEFAULT: - CREATE PACKAGE - DROP PACKAGE - CREATE PACKAGE BODY - DROP PACKAGE BODY - Package function and procedure invocation from outside of the package: -- using two step identifiers SELECT pkg.f1(); CALL pkg.p1() -- using three step identifiers SELECT db.pkg.f1(); CALL db.pkg.p1(); This is a non-standard MariaDB extension. However, later this code can be used to implement the SQL Standard and DB2 dialects of CREATE MODULE.
This commit is contained in:
46
mysql-test/main/sp-package.test
Normal file
46
mysql-test/main/sp-package.test
Normal file
@ -0,0 +1,46 @@
|
||||
#
|
||||
# CREATE PACKAGE for sql_mode='';
|
||||
# Resebmles SQL Standard 'CREATE MODULE'.
|
||||
#
|
||||
|
||||
SET sql_mode='';
|
||||
|
||||
DELIMITER $$;
|
||||
CREATE OR REPLACE PACKAGE pkg
|
||||
PROCEDURE p1();
|
||||
FUNCTION f1() RETURNS INT;
|
||||
END;
|
||||
$$
|
||||
DELIMITER ;$$
|
||||
|
||||
|
||||
DELIMITER $$;
|
||||
CREATE OR REPLACE PACKAGE BODY pkg
|
||||
-- variable declarations
|
||||
DECLARE a INT DEFAULT 11;
|
||||
DECLARE b INT DEFAULT 10;
|
||||
|
||||
-- routine declarations
|
||||
PROCEDURE p1()
|
||||
BEGIN
|
||||
SELECT CURRENT_USER;
|
||||
END;
|
||||
FUNCTION f1() RETURNS INT
|
||||
BEGIN
|
||||
RETURN a;
|
||||
END;
|
||||
|
||||
-- initialization section
|
||||
SET a=a-b;
|
||||
END;
|
||||
$$
|
||||
DELIMITER ;$$
|
||||
|
||||
|
||||
SHOW CREATE PACKAGE pkg;
|
||||
SHOW CREATE PACKAGE BODY pkg;
|
||||
|
||||
CALL pkg.p1();
|
||||
SELECT pkg.f1();
|
||||
|
||||
DROP PACKAGE pkg;
|
Reference in New Issue
Block a user