mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +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:
51
mysql-test/main/sp-package.result
Normal file
51
mysql-test/main/sp-package.result
Normal file
@@ -0,0 +1,51 @@
|
||||
SET sql_mode='';
|
||||
CREATE OR REPLACE PACKAGE pkg
|
||||
PROCEDURE p1();
|
||||
FUNCTION f1() RETURNS INT;
|
||||
END;
|
||||
$$
|
||||
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;
|
||||
$$
|
||||
SHOW CREATE PACKAGE pkg;
|
||||
Package sql_mode Create Package character_set_client collation_connection Database Collation
|
||||
pkg CREATE DEFINER=`root`@`localhost` PACKAGE `pkg` PROCEDURE p1();
|
||||
FUNCTION f1() RETURNS INT;
|
||||
END latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
SHOW CREATE PACKAGE BODY pkg;
|
||||
Package body sql_mode Create Package Body character_set_client collation_connection Database Collation
|
||||
pkg CREATE DEFINER=`root`@`localhost` PACKAGE BODY `pkg` 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 latin1 latin1_swedish_ci latin1_swedish_ci
|
||||
CALL pkg.p1();
|
||||
CURRENT_USER
|
||||
root@localhost
|
||||
SELECT pkg.f1();
|
||||
pkg.f1()
|
||||
1
|
||||
DROP PACKAGE pkg;
|
Reference in New Issue
Block a user