Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/MariaDB/mysql-test/suite/engines/funcs/r/   (MariaDB Server Version 8.1-8.4©)  Datei vom 1.9.2026 mit Größe 98 kB image not shown  

Quellcode-Bibliothek sf_alter.result   Interaktion und
PortierbarkeitLisp

 

CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET#       ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET# CONTAINS SQL     ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET# NO SQL     ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET# READS SQL DATA     ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET# MODIFIES SQL DATA     ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET#     COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET# CONTAINS SQL   COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET# NO SQL   COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET# READS SQL DATA   COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET# MODIFIES SQL DATA   COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET#       ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET# CONTAINS SQL     ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET# NO SQL     ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET# READS SQL DATA     ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET# MODIFIES SQL DATA     ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET#     COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET# CONTAINS SQL   COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET# NO SQL   COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET# READS SQL DATA   COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET# MODIFIES SQL DATA   COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET#   SQL SECURITY INVOKER   ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET# CONTAINS SQL SQL SECURITY INVOKER   ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET# NO SQL SQL SECURITY INVOKER   ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET# READS SQL DATA SQL SECURITY INVOKER   ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET# MODIFIES SQL DATA SQL SECURITY INVOKER   ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET#   SQL SECURITY INVOKER COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET# CONTAINS SQL SQL SECURITY INVOKER COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET# NO SQL SQL SECURITY INVOKER COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET# READS SQL DATA SQL SECURITY INVOKER COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET# MODIFIES SQL DATA SQL SECURITY INVOKER COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET#   SQL SECURITY INVOKER   ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET# CONTAINS SQL SQL SECURITY INVOKER   ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET# NO SQL SQL SECURITY INVOKER   ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET# READS SQL DATA SQL SECURITY INVOKER   ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET# MODIFIES SQL DATA SQL SECURITY INVOKER   ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET#   SQL SECURITY INVOKER COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET# CONTAINS SQL SQL SECURITY INVOKER COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET# NO SQL SQL SECURITY INVOKER COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET# READS SQL DATA SQL SECURITY INVOKER COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET# MODIFIES SQL DATA SQL SECURITY INVOKER COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET#    SQL SECURITY DEFINER   ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET# CONTAINS SQL  SQL SECURITY DEFINER   ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET# NO SQL  SQL SECURITY DEFINER   ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET# READS SQL DATA  SQL SECURITY DEFINER   ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET# MODIFIES SQL DATA  SQL SECURITY DEFINER   ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET#    SQL SECURITY DEFINER COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET# CONTAINS SQL  SQL SECURITY DEFINER COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET# NO SQL  SQL SECURITY DEFINER COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET# READS SQL DATA  SQL SECURITY DEFINER COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1    #DET# MODIFIES SQL DATA  SQL SECURITY DEFINER COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET#    SQL SECURITY DEFINER   ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET# CONTAINS SQL  SQL SECURITY DEFINER   ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET# NO SQL  SQL SECURITY DEFINER   ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET# READS SQL DATA  SQL SECURITY DEFINER   ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET# MODIFIES SQL DATA  SQL SECURITY DEFINER   ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET#    SQL SECURITY DEFINER COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET# CONTAINS SQL  SQL SECURITY DEFINER COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET# NO SQL  SQL SECURITY DEFINER COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET# READS SQL DATA  SQL SECURITY DEFINER COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;
CREATE TABLE t1 (id INTEGER NULL , data INTEGER NULL, KEY(id));
CREATE TABLE t2 (i INTEGER NULL);
CREATE TABLE t3 (id INTEGER NULL, data INTEGER NULL, KEY(id));
CREATE TABLE t4 (i INTEGER NULL);
INSERT INTO t1 VALUES(1,1),(2,1),(3,4),(4,5);
INSERT INTO t2 VALUES(1),(2),(3);
CREATE FUNCTION sf1() RETURNS INTEGER
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM t1;
DECLARE cur2 CURSOR FOR SELECT i FROM t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO t3 VALUES (a,b);
ELSE
INSERT INTO t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
CLOSE cur2;
RETURN 0;
END//
ALTER FUNCTION sf1  LANGUAGE SQL #DET# MODIFIES SQL DATA  SQL SECURITY DEFINER COMMENT 'comment' ;
SELECT sf1();
sf1()
0
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
2 1
3 3
INSERT INTO t4 VALUES(sf1());
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
2 1
2 1
3 3
3 3
UPDATE t4 SET i = sf1() + 1 WHERE i = sf1();
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
DELETE FROM t4 WHERE i = sf1() + 1;
SELECT * FROM t1 ORDER BY id;
id data
1 1
2 1
3 4
4 5
SELECT * FROM t2 ORDER BY i;
i
1
2
3
SELECT * FROM t3 ORDER BY id;
id data
1 1
1 1
1 1
1 1
1 1
2 1
2 1
2 1
2 1
2 1
3 3
3 3
3 3
3 3
3 3
DROP FUNCTION sf1;
DROP TABLE t1,t2,t3,t4;

Messung V0.5 in Prozent
C=67 H=100 G=84

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

*© Formatika GbR, Deutschland






über den Urheber dieser Seite

Die Firma ist wie angegeben erreichbar.

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.