#
# MDEV-39518 Allow prepared statements in stored functions in assignment right hand
#
#
# MDEV-40288 PACKAGE BODY initialization section that contains dynamic SQL fails with ER_NO_SUCH_TABLE for a table that exists
#
#
# Calling PS in the package instantiating section is not allowed from a function
# SET sql_mode=ORACLE; SET @px_cnt=NULL;
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (1);
CREATE PACKAGE pkg1 AS
FUNCTION f RETURN INT;
END;
$$
CREATE PACKAGE BODY pkg1 AS
FUNCTION f RETURN INT AS
BEGIN RETURN42;
END;
BEGIN
EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM t1 INTO @px_cnt';
END;
$$
CREATE PROCEDURE p1() AS
v INT;
BEGIN
v := pkg1.f();
END;
$$
CALL p1(); ERROR0A000: Dynamic SQL is not allowed in stored function or trigger
DROP PROCEDURE p1;
DROP PACKAGE pkg1;
DROP TABLE t1;
SELECT @px_cnt;
@px_cnt
NULL
#
# Calling PS in the package instantiating section is OK from a procedure
# SET sql_mode=ORACLE; SET @px_cnt=NULL;
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (1);
CREATE PACKAGE pkg1 AS
PROCEDURE p1;
END;
$$
CREATE PACKAGE BODY pkg1 AS
PROCEDURE p1 AS BEGIN SET @a=10;
END;
BEGIN
EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM t1 INTO @px_cnt';
END;$$
CREATE PROCEDURE p1() AS
v INT;
BEGIN
CALL pkg1.p1;
END;
$$
CALL p1();
DROP PROCEDURE p1;
DROP PACKAGE pkg1;
DROP TABLE t1;
SELECT @px_cnt;
@px_cnt 1 SET sql_mode=DEFAULT;
#
# A function with dynamic SQL instantiates a package body
# SET sql_mode=ORACLE;
CREATE TABLE t1 (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, a VARCHAR(32));
CREATE PACKAGE pkg1 AS
FUNCTION f1() RETURN INT;
END;
$$
CREATE PACKAGE BODY pkg1 AS
FUNCTION f1() RETURN INT AS
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 (a) VALUES(''func pkg1.f1'')'; RETURN ROW_COUNT();
END;
BEGIN
INSERT INTO t1 (a) VALUES ('package body pkg1');
END;
$$
CREATE PROCEDURE p1 AS
a INT;
BEGIN
a:= pkg1.f1();
SELECT a;
END;
$$
CALL p1;
a 1
SELECT * FROM t1 ORDER BY id;
id a 1 package body pkg1 2 func pkg1.f1
DROP PROCEDURE p1;
DROP PACKAGE pkg1;
DROP TABLE t1; SET sql_mode=DEFAULT;
# End of 13.1 tests
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.8 Sekunden
(vorverarbeitet am 2026-10-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.