Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

SSL ps_in_func-stack3-pfp.result   Interaktion und
PortierbarkeitLisp

 

#
# MDEV-39518 Allow prepared statements in stored functions in assignment right hand
#
# Testing various stack combinations
# p1, f2, p3_direct_immediate
CREATE TABLE t1 (a INT);
CREATE PROCEDURE p3_direct_immediate()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (9)';
INSERT INTO t1 VALUES (10);
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3_direct_immediate();
RETURN 0;
END;
$$
CREATE PROCEDURE p1_set()
BEGIN
DECLARE nrows INT;
SET nrows= f2();
END;
$$
CREATE PROCEDURE p1_select()
BEGIN
SELECT f2();
END;
$$
CREATE PROCEDURE p1_default()
BEGIN
DECLARE nrows INT DEFAULT f2();
END;
$$
CALL p1_select();
ERROR 0A000: Dynamic SQL is not allowed in stored function or trigger
CALL p1_select();
ERROR 0A000: Dynamic SQL is not allowed in stored function or trigger
SELECT * FROM t1;
a
TRUNCATE TABLE t1;
CALL p1_set;
SELECT * FROM t1;
a
9
10
CALL p1_set;
SELECT * FROM t1;
a
9
10
9
10
TRUNCATE TABLE t1;
CALL p1_default;
SELECT * FROM t1;
a
9
10
CALL p1_default;
SELECT * FROM t1;
a
9
10
9
10
DROP PROCEDURE p1_default;
DROP PROCEDURE p1_set;
DROP PROCEDURE p1_select;
DROP FUNCTION f2;
DROP PROCEDURE p3_direct_immediate;
DROP TABLE t1;
# p1, f2, p3_immediate_direct
CREATE TABLE t1 (a INT);
CREATE PROCEDURE p3_direct_immediate()
BEGIN
INSERT INTO t1 VALUES (9);
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (10)';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3_direct_immediate();
RETURN 0;
END;
$$
CREATE PROCEDURE p1_set()
BEGIN
DECLARE nrows INT;
SET nrows= f2();
END;
$$
CREATE PROCEDURE p1_select()
BEGIN
SELECT f2();
END;
$$
CREATE PROCEDURE p1_default()
BEGIN
DECLARE nrows INT DEFAULT f2();
END;
$$
CALL p1_select();
ERROR 0A000: Dynamic SQL is not allowed in stored function or trigger
SELECT * FROM t1;
a
9
CALL p1_select();
ERROR 0A000: Dynamic SQL is not allowed in stored function or trigger
SELECT * FROM t1;
a
9
9
TRUNCATE TABLE t1;
CALL p1_set;
SELECT * FROM t1;
a
9
10
CALL p1_set;
SELECT * FROM t1;
a
9
10
9
10
TRUNCATE TABLE t1;
CALL p1_default;
SELECT * FROM t1;
a
9
10
CALL p1_default;
SELECT * FROM t1;
a
9
10
9
10
DROP PROCEDURE p1_default;
DROP PROCEDURE p1_set;
DROP PROCEDURE p1_select;
DROP FUNCTION f2;
DROP PROCEDURE p3_direct_immediate;
DROP TABLE t1;
# p1, f2(direct+immediate+direct), p3(direct+immediate+direct)
CREATE TABLE t1 (a INT);
CREATE PROCEDURE p3_direct_immediate_direct(OUT nrows INT)
BEGIN
SET nrows= 0;
INSERT INTO t1 VALUES(11);
SET nrows= nrows + ROW_COUNT();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (21)';
SET nrows= nrows + ROW_COUNT();
INSERT INTO t1 VALUES(31);
SET nrows= nrows + ROW_COUNT();
END;
$$
CREATE FUNCTION f2_direct_immediate_direct() RETURNS INT
BEGIN
DECLARE nrows INT DEFAULT 0;
DECLARE nrows1 INT DEFAULT 0;
INSERT INTO t1 VALUES(10);
SET nrows= nrows + ROW_COUNT();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (20)';
SET nrows= nrows + ROW_COUNT();
INSERT INTO t1 VALUES(30);
SET nrows= nrows + ROW_COUNT();
CALL p3_direct_immediate_direct(nrows1);
RETURN nrows+nrows1;
END;
$$
CREATE PROCEDURE p1_select()
BEGIN
SELECT f2_direct_immediate_direct();
END;
$$
CREATE PROCEDURE p1_default()
BEGIN
DECLARE nrows INT DEFAULT f2_direct_immediate_direct();
SELECT nrows;
END;
$$
CREATE PROCEDURE p1_set()
BEGIN
DECLARE nrows INT;
SET nrows= f2_direct_immediate_direct();
SELECT nrows;
END;
$$
CALL p1_select();
ERROR 0A000: Dynamic SQL is not allowed in stored function or trigger
SELECT * FROM t1;
a
10
CALL p1_select();
ERROR 0A000: Dynamic SQL is not allowed in stored function or trigger
SELECT * FROM t1;
a
10
10
TRUNCATE TABLE t1;
CALL p1_default;
nrows
6
SELECT * FROM t1;
a
10
20
30
11
21
31
CALL p1_default;
nrows
6
SELECT * FROM t1;
a
10
20
30
11
21
31
10
20
30
11
21
31
TRUNCATE TABLE t1;
CALL p1_set;
nrows
6
SELECT * FROM t1;
a
10
20
30
11
21
31
CALL p1_set;
nrows
6
SELECT * FROM t1;
a
10
20
30
11
21
31
10
20
30
11
21
31
DROP PROCEDURE p3_direct_immediate_direct;
DROP FUNCTION f2_direct_immediate_direct;
DROP PROCEDURE p1_select;
DROP PROCEDURE p1_default;
DROP PROCEDURE p1_set;
DROP TABLE t1;
#
# MDEV-40900 Procedure with dynamic SQL crashes on an InnoDB table
#
CREATE TABLE t1 (a INT);
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (9)';
INSERT INTO t1 VALUES (10);
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
RETURN 0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE n INT;
SET n= f2();
END;
$$
CALL p1;
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# MDEV-40901 Unexpected Table does not exist error in procedure with PS
#
CREATE TABLE t1 (a INT);
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (9)';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
RETURN 0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE n INT;
SET n= f2();
END;
$$
CALL p1;
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# Various combinations
#
#
# none|*|*
#

#
# [none][none][none]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3;
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [none][none][direct]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3;
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [none][none][immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3;
RETURN 0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [none][none][direct_immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3;
RETURN 0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p3-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [none][direct][none]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [none][direct][direct]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [none][direct][immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [none][direct][direct_immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p3-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [none][immediate][none]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [none][immediate][direct]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [none][immediate][immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
RETURN 0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [none][immediate][direct_immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
RETURN 0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p3-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [none][direct_immediate][none]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [none][direct_immediate][direct]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [none][direct_immediate][immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [none][direct_immediate][direct_immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p3-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# direct|*|*
#

#
# [direct][none][none]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3;
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [direct][none][direct]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3;
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [direct][none][immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3;
RETURN 0;
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
p3-immediate
p1-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [direct][none][direct_immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3;
RETURN 0;
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
p3-immediate
p3-direct
p1-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [direct][direct][none]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [direct][direct][direct]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [direct][direct][immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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
p3-immediate
p1-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [direct][direct][direct_immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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
p3-immediate
p3-direct
p1-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [direct][immediate][none]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [direct][immediate][direct]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [direct][immediate][immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
RETURN 0;
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
p3-immediate
p1-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [direct][immediate][direct_immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
RETURN 0;
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
p3-immediate
p3-direct
p1-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [direct][direct_immediate][none]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [direct][direct_immediate][direct]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [direct][direct_immediate][immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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
p3-immediate
p1-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [direct][direct_immediate][direct_immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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
p3-immediate
p3-direct
p1-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# immediate|*|*
#

#
# [immediate][none][none]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3;
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [immediate][none][direct]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3;
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [immediate][none][immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3;
RETURN 0;
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
p3-immediate
p1-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [immediate][none][direct_immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3;
RETURN 0;
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
p3-immediate
p3-direct
p1-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [immediate][direct][none]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [immediate][direct][direct]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [immediate][direct][immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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
p3-immediate
p1-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [immediate][direct][direct_immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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
p3-immediate
p3-direct
p1-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [immediate][immediate][none]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [immediate][immediate][direct]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [immediate][immediate][immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
RETURN 0;
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
p3-immediate
p1-immediate
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [immediate][immediate][direct_immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
RETURN 0;
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
p3-immediate
p3-direct
p1-immediate
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [immediate][direct_immediate][none]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [immediate][direct_immediate][direct]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [immediate][direct_immediate][immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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
p3-immediate
p1-immediate
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [immediate][direct_immediate][direct_immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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
p3-immediate
p3-direct
p1-immediate
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# direct_immediate|*|*
#

#
# [direct_immediate][none][none]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3;
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [direct_immediate][none][direct]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3;
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [direct_immediate][none][immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3;
RETURN 0;
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
p3-immediate
p1-immediate
p1-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [direct_immediate][none][direct_immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3;
RETURN 0;
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
p3-immediate
p3-direct
p1-immediate
p1-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [direct_immediate][direct][none]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [direct_immediate][direct][direct]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [direct_immediate][direct][immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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
p3-immediate
p1-immediate
p1-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [direct_immediate][direct][direct_immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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
p3-immediate
p3-direct
p1-immediate
p1-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [direct_immediate][immediate][none]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [direct_immediate][immediate][direct]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [direct_immediate][immediate][immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
RETURN 0;
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
p3-immediate
p1-immediate
p1-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [direct_immediate][immediate][direct_immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
RETURN 0;
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
p3-immediate
p3-direct
p1-immediate
p1-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [direct_immediate][direct_immediate][none]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [direct_immediate][direct_immediate][direct]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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 PROCEDURE p3;
DROP TABLE t1;

#
# [direct_immediate][direct_immediate][immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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
p3-immediate
p1-immediate
p1-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;

#
# [direct_immediate][direct_immediate][direct_immediate]
#

CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct');
RETURN 0;
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
p3-immediate
p3-direct
p1-immediate
p1-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
# End of 13.1 tests

Messung V0.5 in Prozent
C=54 H=100 G=80

¤ Dauer der Verarbeitung: 0.20 Sekunden  (vorverarbeitet am  2026-10-08) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

letze Version des Elbe Quellennavigators


Jenseits des Üblichen ....
    

Besucher

Besucher

Statistik
#Sources=1126438
#Domains=1897691