#
# MDEV-39518 Allow prepared statements in stored functions in assignment right hand
#
# P(none,default/set)-F(none,set)-F(immediate)
CREATE TABLE t1 (a INT);
CREATE FUNCTION f_immediate() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (10)'; RETURN ROW_COUNT();
END;
$$
CREATE FUNCTION f2_set() RETURNS INT
BEGIN
DECLARE nrows INT; SET nrows= f_immediate(); RETURN nrows;
END;
$$
CREATE PROCEDURE p3_default()
BEGIN
DECLARE nrows INT DEFAULT f2_set();
END;
$$
CREATE PROCEDURE p3_set()
BEGIN
DECLARE nrows INT; SET nrows= f2_set();
SELECT nrows;
END;
$$
CREATE PROCEDURE p3_select()
BEGIN
SELECT f2_set();
END;
$$
CALL p3_select(); ERROR0A000: Dynamic SQL is not allowed in stored function or trigger
CALL p3_default;
CALL p3_default;
SELECT * FROM t1;
a 10 10
TRUNCATE TABLE t1;
CALL p3_set;
nrows 1
CALL p3_set;
nrows 1
SELECT * FROM t1;
a 10 10
DROP PROCEDURE p3_select;
DROP PROCEDURE p3_default;
DROP PROCEDURE p3_set;
DROP FUNCTION f2_set;
DROP FUNCTION f_immediate;
DROP TABLE t1;
# P(none,default/set)-F(none,default)-F(immediate)
CREATE TABLE t1 (a INT);
CREATE FUNCTION f_immediate() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (10)'; RETURN ROW_COUNT();
END;
$$
CREATE FUNCTION f2_default() RETURNS INT
BEGIN
DECLARE nrows INT DEFAULT f_immediate(); RETURN nrows;
END;
$$
CREATE PROCEDURE p3_default()
BEGIN
DECLARE nrows INT DEFAULT f2_default();
END;
$$
CREATE PROCEDURE p3_set()
BEGIN
DECLARE nrows INT; SET nrows= f2_default();
SELECT nrows;
END;
$$
CALL p3_default;
CALL p3_default;
SELECT * FROM t1;
a 10 10
TRUNCATE TABLE t1;
CALL p3_set;
nrows 1
CALL p3_set;
nrows 1
SELECT * FROM t1;
a 10 10
DROP PROCEDURE p3_default;
DROP PROCEDURE p3_set;
DROP FUNCTION f2_default;
DROP FUNCTION f_immediate;
DROP TABLE t1;
# P(none,default/set)-F(none,default)-F(direct+immediate)
CREATE TABLE t1 (a INT);
CREATE FUNCTION f1_direct_immediate() RETURNS INT
BEGIN
DECLARE nrows INT;
INSERT INTO t1 VALUES (9); SET nrows= ROW_COUNT();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (10)'; RETURN nrows + ROW_COUNT();
END;
$$
CREATE FUNCTION f2_default() RETURNS INT
BEGIN
DECLARE nrows INT DEFAULT f1_direct_immediate(); RETURN nrows;
END;
$$
CREATE PROCEDURE p3_select()
BEGIN
SELECT f2_default();
END;
$$
CREATE PROCEDURE p3_default()
BEGIN
DECLARE nrows INT DEFAULT f2_default();
SELECT * FROM t1;
END;
$$
CREATE PROCEDURE p3_set()
BEGIN
DECLARE nrows INT; SET nrows= f2_default();
SELECT nrows;
SELECT * FROM t1;
END;
$$
CALL p3_select(); ERROR0A000: Dynamic SQL is not allowed in stored function or trigger
CALL p3_default();
a 9 9 10
CALL p3_default();
a 9 9 10 9 10
TRUNCATE TABLE t1;
CALL p3_set();
nrows 2
a 9 10
CALL p3_set();
nrows 2
a 9 10 9 10
SELECT * FROM t1;
a 9 10 9 10
DROP FUNCTION f1_direct_immediate;
DROP FUNCTION f2_default;
DROP PROCEDURE p3_select;
DROP PROCEDURE p3_default;
DROP PROCEDURE p3_set;
DROP TABLE t1;
# P(direct+immediate,default/set)-F(direct+immediate,set)-F(direct+immediate)
CREATE TABLE t1 (id SERIAL, a VARCHAR(100));
CREATE FUNCTION f1_direct_immediate() RETURNS INT
BEGIN
DECLARE nrows INT;
INSERT INTO t1 (a) VALUES ('f1_direct_immediate: direct'); SET nrows= ROW_COUNT();
EXECUTE IMMEDIATE 'INSERT INTO t1 (a) VALUES (?)' USING 'f1_direct_immediate: immediate'; RETURN nrows + ROW_COUNT();
END;
$$
CREATE FUNCTION f2_set() RETURNS INT
BEGIN
DECLARE nrows1, nrows2, nrows3 INT;
INSERT INTO t1 (a) VALUES ('f2_set: direct before f1_direct_immediate'); SET nrows1= ROW_COUNT(); SET nrows2= f1_direct_immediate();
EXECUTE IMMEDIATE 'INSERT INTO t1 (a) VALUES (?)'
USING 'f2_set: immediate after f1_direct_immediate'; SET nrows3= ROW_COUNT(); RETURN nrows1 + nrows2 + nrows3;
END;
$$
CREATE PROCEDURE p3_default()
BEGIN
DECLARE nrows1 INT DEFAULT f2_set();
DECLARE nrows2, nrows3 INT;
INSERT INTO t1 (a) VALUES('p3_default: direct after default f2_set'); SET nrows2= ROW_COUNT();
EXECUTE IMMEDIATE 'INSERT INTO t1 (a) VALUES (?)'
USING 'p3_default: immediate after default p2_set'; SET nrows3= ROW_COUNT();
SELECT nrows1, nrows2, nrows3;
SELECT * FROM t1;
END;
$$
CREATE PROCEDURE p3_set()
BEGIN
DECLARE nrows1, nrows2, nrows3 INT;
EXECUTE IMMEDIATE 'INSERT INTO t1 (a) VALUES (?)'
USING 'p3_set: immediate before f2_set'; SET nrows1= ROW_COUNT(); SET nrows2= f2_set();
INSERT INTO t1 (a) VALUES('p3_set: direct after p2_set'); SET nrows3= ROW_COUNT();
SELECT nrows1, nrows2, nrows3;
SELECT * FROM t1;
END;
$$
CALL p3_default();
nrows1 nrows2 nrows3 411
id a 1 f2_set: direct before f1_direct_immediate 2 f1_direct_immediate: direct 3 f1_direct_immediate: immediate 4 f2_set: immediate after f1_direct_immediate 5 p3_default: direct after default f2_set 6 p3_default: immediate after default p2_set
CALL p3_default();
nrows1 nrows2 nrows3 411
id a 1 f2_set: direct before f1_direct_immediate 2 f1_direct_immediate: direct 3 f1_direct_immediate: immediate 4 f2_set: immediate after f1_direct_immediate 5 p3_default: direct after default f2_set 6 p3_default: immediate after default p2_set 7 f2_set: direct before f1_direct_immediate 8 f1_direct_immediate: direct 9 f1_direct_immediate: immediate 10 f2_set: immediate after f1_direct_immediate 11 p3_default: direct after default f2_set 12 p3_default: immediate after default p2_set
TRUNCATE TABLE t1;
CALL p3_set();
nrows1 nrows2 nrows3 141
id a 1 p3_set: immediate before f2_set 2 f2_set: direct before f1_direct_immediate 3 f1_direct_immediate: direct 4 f1_direct_immediate: immediate 5 f2_set: immediate after f1_direct_immediate 6 p3_set: direct after p2_set
CALL p3_set();
nrows1 nrows2 nrows3 141
id a 1 p3_set: immediate before f2_set 2 f2_set: direct before f1_direct_immediate 3 f1_direct_immediate: direct 4 f1_direct_immediate: immediate 5 f2_set: immediate after f1_direct_immediate 6 p3_set: direct after p2_set 7 p3_set: immediate before f2_set 8 f2_set: direct before f1_direct_immediate 9 f1_direct_immediate: direct 10 f1_direct_immediate: immediate 11 f2_set: immediate after f1_direct_immediate 12 p3_set: direct after p2_set
DROP FUNCTION f1_direct_immediate;
DROP FUNCTION f2_set;
DROP PROCEDURE p3_default;
DROP PROCEDURE p3_set;
DROP TABLE t1;
# P(none,default/set)-F(none,default)-F(sys_refcursor)
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (9), (10); SET sql_mode=ORACLE;
CREATE FUNCTION f1_sys_refcursor() RETURN INT AS
c0 SYS_REFCURSOR;
va INT;
BEGIN
PREPARE stmt FROM 'SELECT MAX(a) FROM t1';
OPEN c0 FOR PREPARE stmt;
FETCH c0 INTO va;
CLOSE c0; RETURN va;
END;
$$
CREATE FUNCTION f2_default() RETURN INT AS
va INT := f1_sys_refcursor();
BEGIN RETURN va;
END;
$$
CREATE PROCEDURE p3_select() AS
BEGIN
SELECT f2_default();
END;
$$
CREATE PROCEDURE p3_default() AS
va INT DEFAULT f2_default();
BEGIN
SELECT va;
END;
$$
CREATE PROCEDURE p3_set() AS
va INT;
BEGIN
va:= f2_default();
SELECT va;
END;
$$
CALL p3_select(); ERROR0A000: Dynamic SQL is not allowed in stored function or trigger
CALL p3_default();
va 10
CALL p3_default();
va 10
CALL p3_set();
va 10
CALL p3_set();
va 10
DROP FUNCTION f1_sys_refcursor;
DROP FUNCTION f2_default;
DROP PROCEDURE p3_select;
DROP PROCEDURE p3_default;
DROP PROCEDURE p3_set;
DROP TABLE t1; SET sql_mode=DEFAULT;
# P(none,default/set)-F(none,default)-F(direct+sys_refcursor)
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (9), (10); SET sql_mode=ORACLE;
CREATE FUNCTION f1_sys_refcursor() RETURN INT AS
c0 SYS_REFCURSOR;
va INT;
BEGIN
va:= (SELECT MAX(a) FROM t1);
INSERT INTO t1 VALUES (va+1);
PREPARE stmt FROM 'SELECT MAX(a) FROM t1';
OPEN c0 FOR PREPARE stmt;
FETCH c0 INTO va;
CLOSE c0; RETURN va;
END;
$$
CREATE FUNCTION f2_default() RETURN INT AS
va INT := f1_sys_refcursor();
BEGIN RETURN va;
END;
$$
CREATE PROCEDURE p3_select() AS
BEGIN
SELECT f2_default();
END;
$$
CREATE PROCEDURE p3_default() AS
va INT DEFAULT f2_default();
BEGIN
SELECT va;
END;
$$
CREATE PROCEDURE p3_set() AS
va INT;
BEGIN
va:= f2_default();
SELECT va;
END;
$$
CALL p3_select(); ERROR0A000: Dynamic SQL is not allowed in stored function or trigger
CALL p3_default();
va 12
CALL p3_default();
va 13
CALL p3_set();
va 14
CALL p3_set();
va 15
DROP FUNCTION f1_sys_refcursor;
DROP FUNCTION f2_default;
DROP PROCEDURE p3_select;
DROP PROCEDURE p3_default;
DROP PROCEDURE p3_set;
DROP TABLE t1; SET sql_mode=DEFAULT;
#
# MDEV-40240 Dynamic SQL must be rejected with ERROR1336 when using non-safe context
#
CREATE TABLE t1 (a INT);
CREATE FUNCTION f_leaf() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (777)'; RETURN1;
END
$$
CREATE FUNCTION f_mid() RETURNS INT
BEGIN
DECLARE x INT; SET x = 100 + f_leaf(); -- Not safe call RETURN x;
END
$$
CREATE PROCEDURE p()
BEGIN
DECLARE r INT DEFAULT f_mid();
END
$$
CALL p(); ERROR0A000: Dynamic SQL is not allowed in stored function or trigger
SELECT * FROM t1;
a
DROP PROCEDURE p;
DROP FUNCTION f_mid;
DROP FUNCTION f_leaf;
DROP TABLE t1;
CREATE TABLE t1 (a INT);
CREATE FUNCTION f_leaf() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (777)'; RETURN1;
END
$$
CREATE FUNCTION f_mid() RETURNS INT
BEGIN
DECLARE x INT;
INSERT INTO t1 VALUES (f_leaf()); -- Not safe call RETURN x;
END;
$$
CREATE PROCEDURE p()
BEGIN
DECLARE r INT DEFAULT f_mid();
END;
$$
CALL p(); ERROR0A000: Dynamic SQL is not allowed in stored function or trigger
DROP PROCEDURE p;
DROP FUNCTION f_mid;
DROP FUNCTION f_leaf;
DROP TABLE t1;
CREATE TABLE t1 (a INT);
CREATE FUNCTION f_leaf() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (777,777)'; -- Bad statement RETURN1;
END;
$$
CREATE FUNCTION f_mid() RETURNS INT
BEGIN
DECLARE x INT;
INSERT INTO t1 VALUES (f_leaf()); RETURN x;
END;
$$
CREATE PROCEDURE p()
BEGIN
DECLARE r INT DEFAULT f_mid();
END;
$$
CALL p(); ERROR0A000: Dynamic SQL is not allowed in stored function or trigger
DROP PROCEDURE p;
DROP FUNCTION f_mid;
DROP FUNCTION f_leaf;
DROP TABLE t1;
#
# MDEV-40913 Function with EXECUTE IMMEDIATE crashes on INSERT with an InnoDB table
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')'; RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
f3-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# MDEV-40914 Function with direct INSERT into Aria table crashes
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a;
a
f2-direct
f3-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# Various combinations
#
#
# none|*|*
#
#
# [none][none][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3(); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [none][none][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3(); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
f3-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [none][none][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')'; RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3(); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
f3-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [none][none][direct_immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')';
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3(); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
f3-immediate
f3-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [none][direct][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [none][direct][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
f3-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [none][direct][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')'; RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
f3-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [none][direct][direct_immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')';
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
f3-immediate
f3-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [none][immediate][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [none][immediate][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
f3-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [none][immediate][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')'; RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
f3-immediate
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [none][immediate][direct_immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')';
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
f3-immediate
f3-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [none][direct_immediate][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [none][direct_immediate][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
f3-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [none][direct_immediate][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')'; RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
f3-immediate
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [none][direct_immediate][direct_immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')';
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
f3-immediate
f3-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# direct|*|*
#
#
# [direct][none][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3(); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [direct][none][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3(); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-direct
f3-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [direct][none][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')'; RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3(); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-direct
f3-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [direct][none][direct_immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')';
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3(); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-direct
f3-immediate
f3-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [direct][direct][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [direct][direct][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-direct
f3-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [direct][direct][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')'; RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-direct
f3-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [direct][direct][direct_immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')';
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-direct
f3-immediate
f3-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [direct][immediate][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [direct][immediate][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-direct
f3-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [direct][immediate][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')'; RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-direct
f3-immediate
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [direct][immediate][direct_immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')';
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-direct
f3-immediate
f3-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [direct][direct_immediate][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [direct][direct_immediate][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-direct
f3-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [direct][direct_immediate][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')'; RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-direct
f3-immediate
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')';
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-direct
f3-immediate
f3-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# immediate|*|*
#
#
# [immediate][none][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3(); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [immediate][none][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3(); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
f3-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [immediate][none][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')'; RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3(); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
f3-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [immediate][none][direct_immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')';
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3(); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
f3-immediate
f3-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [immediate][direct][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [immediate][direct][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
f3-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [immediate][direct][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')'; RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
f3-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [immediate][direct][direct_immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')';
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
f3-immediate
f3-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [immediate][immediate][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [immediate][immediate][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
f3-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [immediate][immediate][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')'; RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
f3-immediate
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [immediate][immediate][direct_immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')';
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
f3-immediate
f3-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [immediate][direct_immediate][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [immediate][direct_immediate][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
f3-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [immediate][direct_immediate][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')'; RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
f3-immediate
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')';
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
f3-immediate
f3-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# direct_immediate|*|*
#
#
# [direct_immediate][none][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3(); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
p1-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [direct_immediate][none][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3(); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
p1-direct
f3-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [direct_immediate][none][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')'; RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3(); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
p1-direct
f3-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [direct_immediate][none][direct_immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')';
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3(); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
p1-direct
f3-immediate
f3-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [direct_immediate][direct][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
p1-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [direct_immediate][direct][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
p1-direct
f3-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [direct_immediate][direct][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')'; RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
p1-direct
f3-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')';
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
p1-direct
f3-immediate
f3-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [direct_immediate][immediate][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
p1-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [direct_immediate][immediate][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
p1-direct
f3-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [direct_immediate][immediate][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')'; RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
p1-direct
f3-immediate
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')';
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
p1-direct
f3-immediate
f3-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
#
# [direct_immediate][direct_immediate][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
p1-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
p1-direct
f3-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')'; RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
p1-direct
f3-immediate
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(30));
CREATE FUNCTION f3() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f3-immediate'')';
INSERT INTO t1 VALUES ('f3-direct'); RETURN0;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
DECLARE v3 VARCHAR(10) DEFAULT f3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
p1-direct
f3-immediate
f3-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP FUNCTION f3;
DROP TABLE t1;
# End of 13.1 tests
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.38 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.