diff options
Diffstat (limited to 'mysql-test/suite/funcs_1/r/innodb_storedproc_02.result')
-rw-r--r-- | mysql-test/suite/funcs_1/r/innodb_storedproc_02.result | 1395 |
1 files changed, 1395 insertions, 0 deletions
diff --git a/mysql-test/suite/funcs_1/r/innodb_storedproc_02.result b/mysql-test/suite/funcs_1/r/innodb_storedproc_02.result new file mode 100644 index 00000000000..60ea7393c73 --- /dev/null +++ b/mysql-test/suite/funcs_1/r/innodb_storedproc_02.result @@ -0,0 +1,1395 @@ + +--source suite/funcs_1/storedproc/load_sp_tb.inc +-------------------------------------------------------------------------------- +SET @@global.max_heap_table_size=4294967295; +SET @@session.max_heap_table_size=4294967295; + +--source suite/funcs_1/storedproc/cleanup_sp_tb.inc +-------------------------------------------------------------------------------- +DROP DATABASE IF EXISTS db_storedproc; +DROP DATABASE IF EXISTS db_storedproc_1; +CREATE DATABASE db_storedproc; +CREATE DATABASE db_storedproc_1; +USE db_storedproc; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; +load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; +load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = innodb; +load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; +load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +USE db_storedproc_1; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; +load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +USE db_storedproc; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; +load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +Warnings: +Warning 1265 Data truncated for column 'f3' at row 1 +Warning 1265 Data truncated for column 'f3' at row 2 +Warning 1265 Data truncated for column 'f3' at row 3 +Warning 1265 Data truncated for column 'f3' at row 4 +Warning 1265 Data truncated for column 'f3' at row 5 +Warning 1265 Data truncated for column 'f3' at row 6 +Warning 1265 Data truncated for column 'f3' at row 7 +Warning 1265 Data truncated for column 'f3' at row 8 +Warning 1265 Data truncated for column 'f3' at row 9 +Warning 1265 Data truncated for column 'f3' at row 10 +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; +load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +Warnings: +Warning 1265 Data truncated for column 'f3' at row 1 +Warning 1265 Data truncated for column 'f3' at row 2 +Warning 1265 Data truncated for column 'f3' at row 3 +Warning 1265 Data truncated for column 'f3' at row 4 +Warning 1265 Data truncated for column 'f3' at row 5 +Warning 1265 Data truncated for column 'f3' at row 6 +Warning 1265 Data truncated for column 'f3' at row 7 +Warning 1265 Data truncated for column 'f3' at row 8 +Warning 1265 Data truncated for column 'f3' at row 9 +Warning 1265 Data truncated for column 'f3' at row 10 +create table t9(f1 int, f2 char(25), f3 int) engine = innodb; +load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; +load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; +load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; + +Section 3.1.2 - Syntax checks for the stored procedure-specific +programming statements BEGIN/END, DECLARE, SET, SELECT/INTO, OPEN, FETCH, CLOSE: +-------------------------------------------------------------------------------- + +Testcase 3.1.2.8: +----------------- + +Ensure that the scope of each BEGIN/END compound statement within a stored +procedure definition is properly applied +-------------------------------------------------------------------------------- +DROP PROCEDURE IF EXISTS sp1; +CREATE PROCEDURE sp1( ) +begin_label: BEGIN +declare x char DEFAULT 'x'; +declare y char DEFAULT 'y'; +set x = '1'; +set y = '2'; +label1: BEGIN +declare x char DEFAULT 'X'; +declare y char DEFAULT 'Y'; +SELECT f1, f2 into x, y from t2 limit 1; +SELECT '1.1', x, y; +label2: BEGIN +declare x char default 'a'; +declare y char default 'b'; +label3: BEGIN +declare x char default 'c'; +declare y char default 'd'; +label4: BEGIN +declare x char default 'e'; +declare y char default 'f'; +label5: BEGIN +declare x char default 'g'; +declare y char default 'h'; +SELECT 5, x, y; +END label5; +SELECT 4, x, y; +END label4; +SELECT 3, x, y; +END label3; +SELECT 2, x, y; +END label2; +END label1; +set @v1 = x; +set @v2 = y; +SELECT '1.2', @v1, @v2; +END begin_label// +CALL sp1(); +1.1 x y +1.1 a a +5 x y +5 g h +4 x y +4 e f +3 x y +3 c d +2 x y +2 a b +1.2 @v1 @v2 +1.2 1 2 +Warnings: +Warning 1265 Data truncated for column 'x' at row 1 +Warning 1265 Data truncated for column 'y' at row 1 +DROP PROCEDURE IF EXISTS sp1; + +Testcase 3.1.2.26: +------------------ + +Ensure that the initial value of every variable declared for a stored procedure +is either NULL or its DEFAULT value, as appropriate. +-------------------------------------------------------------------------------- +DROP PROCEDURE IF EXISTS sp1; +set @v1=0; +set @v2=0; +CREATE PROCEDURE sp1( ) +BEGIN +declare x1 char default 'x'; +declare y1 char; +declare x2 tinytext default 'tinytext'; +declare y2 tinytext; +declare x3 datetime default '2005-10-03 12:13:14'; +declare y3 datetime; +declare x4 float default 1.2; +declare y4 float; +declare x5 blob default 'b'; +declare y5 blob; +declare x6 smallint default 127; +declare y6 smallint; +SELECT x1, x2, x3, x4, x5, x6, y1, y2, y3, y4, y5, y6; +END// +CALL sp1(); +x1 x2 x3 x4 x5 x6 y1 y2 y3 y4 y5 y6 +x tinytext 2005-10-03 12:13:14 1.2 b 127 NULL NULL NULL NULL NULL NULL +DROP PROCEDURE sp1; + +Testcase 3.1.2.30: +------------------ + +Ensure that, when a stored procedure is called/executed, every variable always +uses the correct value: either the value with which it is initialized or the +value to which it is subsequently SET or otherwise assigned, as appropriate. +-------------------------------------------------------------------------------- +DROP PROCEDURE IF EXISTS sp1; +CREATE PROCEDURE sp1( IN invar INT, OUT outvar INT ) +BEGIN +declare x integer; +declare y integer default 1; +set @x = x; +set @y = y; +set @z = 234; +SELECT f1, f2 into @x, @y from t2 where f1='a`' and f2='a`' limit 1; +SELECT @x, @y, @z, invar; +BEGIN +set @x = 2; +SELECT @x, @y, @z; +SET outvar = @x * invar + @z * @f; +SET invar = outvar; +BEGIN +set @y = null, @z = 'abcd'; +SELECT @x, @y, @z; +END; +END; +END// +SET @invar = 100; +SET @outvar = @invar; +SET @f = 10; +SELECT @x, @y, @z, @invar, @outvar; +@x @y @z @invar @outvar +NULL NULL NULL 100 100 +CALL sp1( @invar, @outvar ); +@x @y @z invar +a` a` 234 100 +@x @y @z +2 a` 234 +@x @y @z +2 NULL abcd +SELECT @x, @y, @z, @invar, @outvar; +@x @y @z @invar @outvar +2 NULL abcd 100 2540 +DROP PROCEDURE sp1; + +Testcase 3.1.2.31: +------------------ + +Ensure that the SELECT ... INTO statement properly assigns values to the +variables in its variable list. +-------------------------------------------------------------------------------- +DROP PROCEDURE IF EXISTS sp1; +CREATE PROCEDURE sp1( ) +BEGIN +declare x integer; declare y integer; +set @x=x; +set @y=y; +SELECT f4, f3 into @x, @y from t2 where f4=-5000 and f3='1000-01-01' limit 1; +SELECT @x, @y; +END// +CALL sp1(); +@x @y +-5000 1000-01-01 +DROP PROCEDURE sp1; + +Testcase 3.1.2.32: +------------------ + +Ensure that a SELECT ... INTO statement that retrieves multiple rows is +rejected, with an appropriate error message. +-------------------------------------------------------------------------------- +DROP PROCEDURE IF EXISTS sp1; +CREATE PROCEDURE sp1( ) +BEGIN +declare x integer; declare y integer; +set @x=x; +set @y=y; +SELECT f4, f3 into @x, @y from t2; +END// +CALL sp1(); +ERROR 42000: Result consisted of more than one row +DROP PROCEDURE sp1; + +Testcase 3.1.2.33: +------------------ + +Ensure that a SELECT ... INTO statement that retrieves too many columns for the +number of variables in its variable list is rejected, with an appropriate error +message. +-------------------------------------------------------------------------------- +DROP PROCEDURE IF EXISTS sp1; +CREATE PROCEDURE sp1( ) +BEGIN +declare x integer; declare y integer; +set @x=x; +set @y=y; +SELECT f4, f3, f2, f1 into @x, @y from t2; +END// +CALL sp1(); +ERROR 21000: The used SELECT statements have a different number of columns +DROP PROCEDURE sp1; + +Testcase 3.1.2.34: +------------------ + +Ensure that a SELECT ... INTO statement that retrieves too few columns for the +number of variables in its variable list is rejected, with an appropriate error +message. +-------------------------------------------------------------------------------- +DROP PROCEDURE IF EXISTS sp1; +CREATE PROCEDURE sp1( ) +BEGIN +declare x integer; declare y integer; declare z integer; +set @x=x; +set @y=y; +set @z=z; +SELECT f4 into @x, @y, @z from t2; +END// +CALL sp1(); +ERROR 21000: The used SELECT statements have a different number of columns +DROP PROCEDURE sp1; + +Testcase 3.1.2.38: +------------------ + +Ensure that the scope of every condition declared is properly applied. +-------------------------------------------------------------------------------- +DROP PROCEDURE IF EXISTS h1; +DROP TABLE IF EXISTS res_t1; +create table res_t1(w char unique, x char); +insert into res_t1 values('a', 'b'); +CREATE PROCEDURE h1 () +BEGIN +declare x1, x2, x3, x4, x5, x6 int default 0; +SELECT '-1-', x1, x2, x3, x4, x5, x6; +BEGIN +declare condname condition for sqlstate '23000'; +declare continue handler for condname set x5 = 1; +set x6 = 0; +insert into res_t1 values ('a', 'b'); +set x6 = 1; +SELECT '-2-', x1, x2, x3, x4, x5, x6; +END; +begin1_label: BEGIN +BEGIN +declare condname condition for sqlstate '20000'; +declare continue handler for condname set x1 = 1; +set x2 = 0; +case x2 +when 1 then set x2=10; +when 2 then set x2=11; +END case; +set x2 = 1; +SELECT '-3-', x1, x2, x3, x4, x5, x6; +begin2_label: BEGIN +BEGIN +declare condname condition for sqlstate '23000'; +declare exit handler for condname set x3 = 1; +set x4= 1; +SELECT '-4a', x1, x2, x3, x4, x5, x6; +insert into res_t1 values ('a', 'b'); +set x4= 2; +SELECT '-4b', x1, x2, x3, x4, x5, x6; +END; +SELECT '-5-', x1, x2, x3, x4, x5, x6; +END begin2_label; +SELECT '-6-', x1, x2, x3, x4, x5, x6; +END; +SELECT '-7-', x1, x2, x3, x4, x5, x6; +END begin1_label; +SELECT 'END', x1, x2, x3, x4, x5, x6; +END// +CALL h1(); +-1- x1 x2 x3 x4 x5 x6 +-1- 0 0 0 0 0 0 +-2- x1 x2 x3 x4 x5 x6 +-2- 0 0 0 0 1 1 +-3- x1 x2 x3 x4 x5 x6 +-3- 1 1 0 0 1 1 +-4a x1 x2 x3 x4 x5 x6 +-4a 1 1 0 1 1 1 +-5- x1 x2 x3 x4 x5 x6 +-5- 1 1 1 1 1 1 +-6- x1 x2 x3 x4 x5 x6 +-6- 1 1 1 1 1 1 +-7- x1 x2 x3 x4 x5 x6 +-7- 1 1 1 1 1 1 +END x1 x2 x3 x4 x5 x6 +END 1 1 1 1 1 1 +DROP TABLE IF EXISTS tnull; +DROP PROCEDURE IF EXISTS sp1; +CREATE TABLE tnull(f1 int); +CREATE PROCEDURE sp1() +BEGIN +declare cond1 condition for sqlstate '42S02'; +declare continue handler for cond1 set @var2 = 1; +BEGIN +declare cond1 condition for sqlstate '23000'; +declare continue handler for cond1 set @var2 = 1; +END; +insert into tnull values(1); +END// +CALL sp1(); +DROP PROCEDURE h1; +drop table res_t1; +DROP PROCEDURE sp1; +DROP TABLE tnull; + +Testcase 3.1.2.43: +------------------ + +Ensure that the DECLARE ... HANDLER FOR statement can not declare any handler +for a condition declared outside of the scope of the handler. +-------------------------------------------------------------------------------- +DROP PROCEDURE IF EXISTS h1; +DROP PROCEDURE IF EXISTS h2; +drop table IF EXISTS res_t1; +create table res_t1(w char unique, x char); +insert into res_t1 values ('a', 'b'); +CREATE PROCEDURE h1 () +BEGIN +declare x1, x2, x3, x4, x5, x6 int default 0; +BEGIN +declare cond_1 condition for sqlstate '23000'; +declare continue handler for cond_1 set x5 = 1; +BEGIN +declare cond_2 condition for sqlstate '20000'; +declare continue handler for cond_1 set x1 = 1; +BEGIN +declare continue handler for cond_2 set x3 = 1; +set x2 = 1; +END; +set x6 = 0; +END; +BEGIN +declare continue handler for cond_1 set x1 = 1; +BEGIN +declare continue handler for cond_2 set x3 = 1; +set x2 = 1; +END; +set x6 = 0; +END; +END; +SELECT x1, x2, x3, x4, x5, x6; +END// +ERROR 42000: Undefined CONDITION: cond_2 +CREATE PROCEDURE h2 () +BEGIN +declare x1, x2, x3, x4, x5, x6 int default 0; +BEGIN +declare condname condition for sqlstate '23000'; +declare continue handler for condname set x5 = 1; +BEGIN +declare condname condition for sqlstate '20000'; +declare continue handler for condname set x1 = 1; +BEGIN +declare condname condition for sqlstate '42000'; +declare continue handler for condname set x3 = 1; +set x6 = 0; +insert into res_t1 values ('a', 'b'); +set x6 = 1; +set x4= 0; +CALL sp1(); +set x4= 1; +set x2 = 0; +case x2 +when 1 then set x2=10; +when 2 then set x2=11; +END case; +set x2 = 1; +END; +set x2 = 0; +case x2 +when 1 then set x2=10; +when 2 then set x2=11; +END case; +set x2 = 1; +set x6 = 0; +insert into res_t1 values ('a', 'b'); +set x6 = 1; +END; +END; +SELECT x1, x2, x3, x4, x5, x6; +END// +CALL h2(); +x1 x2 x3 x4 x5 x6 +1 1 1 1 1 1 +SELECT * FROM res_t1; +w x +a b +DROP PROCEDURE h2; +drop table res_t1; + +Testcase 3.1.2.44: +------------------ + +Ensure that the DECLARE ... HANDLER FOR statement cannot declare a handler for +any invalid, or undeclared, condition. +-------------------------------------------------------------------------------- +DROP PROCEDURE IF EXISTS h1; +CREATE PROCEDURE h1 () +BEGIN +declare x1, x2, x3, x4, x5, x6 int default 0; +BEGIN +declare condname1 condition for sqlstate '23000'; +BEGIN +declare condname2 condition for sqlstate '20000'; +declare continue handler for condname1 set x3 = 1; +declare continue handler for condname2 set x1 = 1; +END; +END; +BEGIN +declare condname3 condition for sqlstate '42000'; +declare continue handler for condname1 set x3 = 1; +declare continue handler for condname2 set x5 = 1; +declare continue handler for condname3 set x1 = 1; +END; +END// +ERROR 42000: Undefined CONDITION: condname1 +CREATE PROCEDURE h1 () +BEGIN +DECLARE x1 INT DEFAULT 0; +BEGIN +DECLARE condname1 CONDITION CHECK SQLSTATE '23000'; +END; +DECLARE CONTINUE HANDLER FOR condname1 SET x1 = 1; +END// +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CHECK SQLSTATE '23000'; +END; +DECLARE CONTINUE HANDLER FOR condname1 SET x1 = 1; +' at line 5 +CREATE PROCEDURE h1 () +BEGIN +DECLARE x1 INT DEFAULT 0; +BEGIN +DECLARE condname1 CONDITION FOR SQLSTATE 'qwert'; +END; +DECLARE CONTINUE HANDLER FOR condname1 SET x1 = 1; +END// +ERROR 42000: Bad SQLSTATE: 'qwert' + +Testcase 3.1.2.45 + 3.1.2.50: +----------------------------- + +45. Ensure that the scope of every handler declared is properly applied. +50. Ensure that a CONTINUE handler allows the execution of the stored procedure +. to continue once the handler statement has completed its own execution (that +. is, once the handler action statement has been executed). +-------------------------------------------------------------------------------- +DROP PROCEDURE IF EXISTS p1; +DROP PROCEDURE IF EXISTS p1undo; +DROP PROCEDURE IF EXISTS h1; +DROP PROCEDURE IF EXISTS sp1; +drop table IF EXISTS res_t1; +==> 'UNDO' is still not supported. +create procedure p1undo () +begin +declare undo handler for sqlexception select '1'; +select * from tqq; +SELECT 'end of 1'; +end;// +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'undo handler for sqlexception select '1'; +select * from tqq; +SELECT 'end of 1'; +' at line 3 +create procedure p1 () +begin +declare exit handler for sqlexception select 'exit handler 1'; +begin +declare exit handler for sqlexception select 'exit handler 2'; +begin +declare continue handler for sqlexception select 'continue handler 3'; +drop table if exists tqq; +select * from tqq; +SELECT 'end of BEGIN/END 3'; +end; +drop table if exists tqq; +select * from tqq; +SELECT 'end of BEGIN/END 2'; +end; +select * from tqq; +SELECT 'end of BEGIN/END 1'; +end;// +call p1()// +continue handler 3 +continue handler 3 +end of BEGIN/END 3 +end of BEGIN/END 3 +exit handler 2 +exit handler 2 +exit handler 1 +exit handler 1 +Warnings: +Note 1051 Unknown table 'tqq' +Note 1051 Unknown table 'tqq' +create table res_t1(w char unique, x char); +insert into res_t1 values ('a', 'b'); +CREATE PROCEDURE h1 () +BEGIN +declare x1, x2, x3, x4, x5, x6 int default 0; +BEGIN +declare continue handler for sqlstate '23000' set x5 = 1; +insert into res_t1 values ('a', 'b'); +set x6 = 1; +END; +begin1_label: BEGIN +BEGIN +declare continue handler for sqlstate '23000' set x1 = 1; +insert into res_t1 values ('a', 'b'); +set x2 = 1; +begin2_label: BEGIN +BEGIN +declare exit handler for sqlstate '23000' set x3 = 1; +set x4= 1; +insert into res_t1 values ('a', 'b'); +set x4= 0; +END; +END begin2_label; +END; +END begin1_label; +SELECT x1, x2, x3, x4, x5, x6; +END// +CALL h1(); +x1 x2 x3 x4 x5 x6 +1 1 1 1 1 1 +CREATE PROCEDURE sp1() +begin1_label:BEGIN +declare exit handler for sqlstate '00000' set @var1 = 5; +set @var2 = 6; +begin2_label:BEGIN +declare continue handler for sqlstate '00000' set @var3 = 7; +set @var4 = 8; +SELECT @var3, @var4; +END begin2_label; +SELECT @var1, @var2; +END begin1_label// +CALL sp1(); +@var3 @var4 +NULL 8 +@var1 @var2 +NULL 6 +DROP PROCEDURE p1; +DROP PROCEDURE h1; +DROP PROCEDURE sp1; +DROP TABLE res_t1; + +Testcase 3.1.2.50: +------------------ +DROP PROCEDURE IF EXISTS sp1; +DROP PROCEDURE IF EXISTS sp2; +CREATE PROCEDURE sp1 (x int, y int) +BEGIN +set @y=0; +END// +CREATE PROCEDURE sp2 () +BEGIN +declare continue handler for sqlstate '42000' set @x2 = 1; +set @x=1; +SELECT @x2; +CALL sp1(1); +set @x=2; +SELECT @x2, @x; +END// +CALL sp2(); +@x2 +NULL +@x2 @x +1 2 +DROP PROCEDURE sp1; +DROP PROCEDURE sp2; + +Testcase 3.2.2.51: +------------------ + +Ensure that an EXIT handler causes the execution of the stored procedure to +terminate, within its scope, once the handler action statement has been +executed. +-------------------------------------------------------------------------------- +DROP PROCEDURE IF EXISTS sp1; +DROP PROCEDURE IF EXISTS sp2; +CREATE PROCEDURE sp1 (x int, y int) +BEGIN +set @x=0; +END// +CREATE PROCEDURE sp2 () +BEGIN +declare exit handler for sqlstate '42000' set @x2 = 1; +set @x2=0; +set @x=1; +SELECT '-1-', @x2, @x; +CALL sp1(1); +SELECT '-2-', @x2, @x; +set @x=2; +END// +CALL sp1(1); +ERROR 42000: Incorrect number of arguments for PROCEDURE db_storedproc.sp1; expected 2, got 1 +CALL sp2(); +-1- @x2 @x +-1- 0 1 +SELECT '-3-', @x2, @x; +-3- @x2 @x +-3- 1 1 +DROP PROCEDURE sp1; +DROP PROCEDURE sp2; + +Testcase 3.1.2.52: +------------------ + +Ensure that an EXIT handler does not cause the execution of the stored procedure +to terminate outside of its scope. +-------------------------------------------------------------------------------- +DROP PROCEDURE IF EXISTS sp1; +DROP PROCEDURE IF EXISTS sp2; +CREATE PROCEDURE sp1 (x int, y int) +BEGIN +set @x=0; +END// +CREATE PROCEDURE sp2() +BEGIN +declare continue handler for sqlstate '42000' set @x2 = 2; +set @x2 = 1; +set @x =20; +SELECT '-1-', @x2, @x; +BEGIN +declare exit handler for sqlstate '42000' set @x2 = 11; +SELECT '-2-', @x2, @x; +CALL sp1(1); +SELECT '-3a', @x2, @x; +set @x=21; +SELECT '-3b', @x2, @x; +END; +set @x=22; +SELECT '-4-', @x2, @x; +END// +CALL sp2(); +-1- @x2 @x +-1- 1 20 +-2- @x2 @x +-2- 1 20 +-4- @x2 @x +-4- 11 22 +DROP PROCEDURE sp1; +DROP PROCEDURE sp2; + +Testcase 3.1.2.54: +------------------ + +Ensure that a handler with a condition defined with an SQLSTATE that begins with +“01“ is always exactly equivalent in action to a handler with an SQLWARNING +condition. +-------------------------------------------------------------------------------- +DROP PROCEDURE IF EXISTS sp0; +DROP PROCEDURE IF EXISTS sp1; +DROP PROCEDURE IF EXISTS sp2; +DROP PROCEDURE IF EXISTS sp3; +DROP PROCEDURE IF EXISTS sp4; +DROP TABLE IF EXISTS temp; +CREATE TABLE temp( f1 CHAR, f2 CHAR); +CREATE PROCEDURE sp0() +BEGIN +set @done=0; +set @x=0; +insert into temp values('xxx', 'yy'); +set @x=1; +END// +CREATE PROCEDURE sp1() +BEGIN +declare continue handler for sqlstate '01000' set @done = 1; +set @done=0; +set @x=0; +insert into temp values('xxx', 'yy'); +set @x=1; +END// +CREATE PROCEDURE sp2() +BEGIN +declare continue handler for sqlwarning set @done = 1; +set @done=0; +set @x=0; +insert into temp values('xxx', 'yy'); +set @x=1; +END// +CREATE PROCEDURE sp3() +BEGIN +declare exit handler for sqlstate '01000' set @done = 1; +set @done=0; +set @x=0; +insert into temp values('xxx', 'yy'); +set @x=1; +END// +CREATE PROCEDURE sp4() +BEGIN +declare exit handler for sqlwarning set @done = 1; +set @done=0; +set @x=0; +insert into temp values('xxx', 'yy'); +set @x=1; +END// +INSERT INTO temp VALUES('0', NULL); +CALL sp0(); +Warnings: +Warning 1265 Data truncated for column 'f1' at row 1 +Warning 1265 Data truncated for column 'f2' at row 1 +SELECT @done, @x; +@done @x +0 1 +INSERT INTO temp VALUES('1', NULL); +CALL sp1(); +SELECT @done, @x; +@done @x +1 1 +INSERT INTO temp VALUES('2', NULL); +CALL sp2(); +SELECT @done, @x; +@done @x +1 1 +INSERT INTO temp VALUES('3', NULL); +CALL sp3(); +SELECT @done, @x; +@done @x +1 0 +INSERT INTO temp VALUES('4', NULL); +CALL sp4(); +SELECT @done, @x; +@done @x +1 0 +SELECT * FROM temp; +f1 f2 +0 NULL +x y +1 NULL +x y +2 NULL +x y +3 NULL +x y +4 NULL +x y +DROP PROCEDURE sp1; +DROP PROCEDURE sp2; +DROP PROCEDURE sp3; +DROP PROCEDURE sp4; +DROP TABLE temp; + +Testcase 3.1.2.56: +------------------ + +Ensure that a handler with a condition defined with an SQLSTATE that begins with +“02“ is always exactly equivalent in action to a handler with a NOT FOUND +condition. +-------------------------------------------------------------------------------- +DROP PROCEDURE IF EXISTS sp0; +DROP PROCEDURE IF EXISTS sp1; +DROP PROCEDURE IF EXISTS sp2; +DROP PROCEDURE IF EXISTS sp3; +DROP PROCEDURE IF EXISTS sp4; +CREATE PROCEDURE sp0() +BEGIN +DECLARE f1_value CHAR(20); +DECLARE cur1 CURSOR FOR SELECT f1 FROM t2 LIMIT 1; +SET @done = 0; +SET @x = 0; +OPEN cur1; +FETCH cur1 INTO f1_value; +SET @x = 1; +FETCH cur1 INTO f1_value; +SET @x = 2; +CLOSE cur1; +END// +CREATE PROCEDURE sp1() +BEGIN +DECLARE f1_value CHAR(20); +DECLARE cur1 CURSOR FOR SELECT f1 FROM t2 LIMIT 1; +declare continue handler for sqlstate '02000' set @done = 1; +SET @done = 0; +SET @x = 0; +OPEN cur1; +FETCH cur1 INTO f1_value; +SET @x = 1; +FETCH cur1 INTO f1_value; +SET @x = 2; +CLOSE cur1; +END// +CREATE PROCEDURE sp2() +BEGIN +DECLARE f1_value CHAR(20); +DECLARE cur1 CURSOR FOR SELECT f1 FROM t2 LIMIT 1; +declare continue handler for not found set @done = 1; +SET @done = 0; +SET @x = 0; +OPEN cur1; +FETCH cur1 INTO f1_value; +SET @x = 1; +FETCH cur1 INTO f1_value; +SET @x = 2; +CLOSE cur1; +END// +CREATE PROCEDURE sp3() +BEGIN +DECLARE f1_value CHAR(20); +DECLARE cur1 CURSOR FOR SELECT f1 FROM t2 LIMIT 1; +declare exit handler for sqlstate '02000' set @done = 1; +SET @done = 0; +SET @x = 0; +OPEN cur1; +FETCH cur1 INTO f1_value; +SET @x = 1; +FETCH cur1 INTO f1_value; +SET @x = 2; +CLOSE cur1; +END// +CREATE PROCEDURE sp4() +BEGIN +DECLARE f1_value CHAR(20); +DECLARE cur1 CURSOR FOR SELECT f1 FROM t2 LIMIT 1; +declare exit handler for not found set @done = 1; +SET @done = 0; +SET @x = 0; +OPEN cur1; +FETCH cur1 INTO f1_value; +SET @x = 1; +FETCH cur1 INTO f1_value; +SET @x = 2; +CLOSE cur1; +END// +CALL sp0(); +ERROR 02000: No data - zero rows fetched, selected, or processed +SELECT @done, @x; +@done @x +0 1 +CALL sp1(); +SELECT @done, @x; +@done @x +1 2 +CALL sp2(); +SELECT @done, @x; +@done @x +1 2 +CALL sp3(); +SELECT @done, @x; +@done @x +1 1 +CALL sp4(); +SELECT @done, @x; +@done @x +1 1 +DROP PROCEDURE sp0; +DROP PROCEDURE sp1; +DROP PROCEDURE sp2; +DROP PROCEDURE sp3; +DROP PROCEDURE sp4; + +Testcase 3.1.2.58: +------------------ + +Ensure that a handler with a condition defined with an SQLSTATE that begins with +anything other that “01“ or “02“ is always exactly equivalent in action to a +handler with an SQLEXCEPTION condition. +-------------------------------------------------------------------------------- +DROP PROCEDURE IF EXISTS sp0; +DROP PROCEDURE IF EXISTS sp1; +DROP PROCEDURE IF EXISTS sp2; +DROP PROCEDURE IF EXISTS sp3; +DROP PROCEDURE IF EXISTS sp4; +CREATE PROCEDURE sp0() +BEGIN +DECLARE f1_value CHAR(20); +DECLARE cv INT DEFAULT 0; +DECLARE cur1 CURSOR FOR SELECT f1 FROM t2 LIMIT 1; +SET @x = 1; +CASE cv +WHEN 2 THEN SET @x = 2; +WHEN 3 THEN SET @x = 3; +END case; +SET @x = 4; +SELECT f1, f2 FROM t2 +UNION +SELECT f1, f2,3 FROM t2; +SET @x = 5; +FETCH cur1 INTO f1_value; +SET @x = 6; +END// +CREATE PROCEDURE sp1() +BEGIN +DECLARE f1_value CHAR(20); +DECLARE cv INT DEFAULT 0; +DECLARE cur1 CURSOR FOR SELECT f1 FROM t2 LIMIT 1; +DECLARE continue HANDLER FOR SQLSTATE '20000' SELECT '20000' AS 'SQLSTATE'; +DECLARE continue HANDLER FOR SQLSTATE '21000' SELECT '21000' AS 'SQLSTATE'; +DECLARE continue HANDLER FOR SQLSTATE '24000' SELECT '24000' AS 'SQLSTATE'; +SET @x = 1; +CASE cv +WHEN 2 THEN SET @x = 2; +WHEN 3 THEN SET @x = 3; +END case; +SET @x = 4; +SELECT f1, f2 FROM t2 +UNION +SELECT f1, f2,3 FROM t2; +SET @x = 5; +FETCH cur1 INTO f1_value; +SET @x = 6; +END// +CREATE PROCEDURE sp2() +BEGIN +DECLARE f1_value CHAR(20); +DECLARE cv INT DEFAULT 0; +DECLARE cur1 CURSOR FOR SELECT f1 FROM t2 LIMIT 1; +DECLARE continue HANDLER FOR SQLEXCEPTION SELECT 'SQLEXCEPTION' AS 'SQLSTATE'; +DECLARE continue HANDLER FOR SQLSTATE '24000' SELECT '24000' AS 'SQLSTATE'; +SET @x = 1; +CASE cv +WHEN 2 THEN SET @x = 2; +WHEN 3 THEN SET @x = 3; +END case; +SET @x = 4; +SELECT f1, f2 FROM t2 +UNION +SELECT f1, f2,3 FROM t2; +SET @x = 5; +FETCH cur1 INTO f1_value; +SET @x = 6; +END// +CREATE PROCEDURE sp3() +BEGIN +DECLARE f1_value CHAR(20); +DECLARE cv INT DEFAULT 0; +DECLARE cur1 CURSOR FOR SELECT f1 FROM t2 LIMIT 1; +DECLARE EXIT HANDLER FOR SQLSTATE '20000' SELECT '20000' AS 'SQLSTATE'; +DECLARE EXIT HANDLER FOR SQLSTATE '21000' SELECT '21000' AS 'SQLSTATE'; +DECLARE EXIT HANDLER FOR SQLSTATE '24000' SELECT '24000' AS 'SQLSTATE'; +SET @x = 1; +CASE cv +WHEN 2 THEN SET @x = 2; +WHEN 3 THEN SET @x = 3; +END case; +SET @x = 4; +SELECT f1, f2 FROM t2 +UNION +SELECT f1, f2,3 FROM t2; +SET @x = 5; +FETCH cur1 INTO f1_value; +SET @x = 6; +END// +CREATE PROCEDURE sp4() +BEGIN +DECLARE f1_value CHAR(20); +DECLARE cv INT DEFAULT 0; +DECLARE cur1 CURSOR FOR SELECT f1 FROM t2 LIMIT 1; +DECLARE EXIT HANDLER FOR SQLEXCEPTION SELECT 'SQLEXCEPTION' AS 'SQLSTATE'; +DECLARE EXIT HANDLER FOR SQLSTATE '24000' SELECT '24000' AS 'SQLSTATE'; +SET @x = 1; +CASE cv +WHEN 2 THEN SET @x = 2; +WHEN 3 THEN SET @x = 3; +END case; +SET @x = 4; +SELECT f1, f2 FROM t2 +UNION +SELECT f1, f2,3 FROM t2; +SET @x = 5; +FETCH cur1 INTO f1_value; +SET @x = 6; +CLOSE cur1; +END// +CALL sp0(); +ERROR 20000: Case not found for CASE statement +SELECT '-0-', @x; +-0- @x +-0- 1 +CALL sp1(); +SQLSTATE +20000 +SQLSTATE +21000 +SQLSTATE +24000 +SELECT '-1-', @x; +-1- @x +-1- 6 +CALL sp2(); +SQLSTATE +SQLEXCEPTION +SQLSTATE +SQLEXCEPTION +SQLSTATE +24000 +SELECT '-2-', @x; +-2- @x +-2- 6 +CALL sp3(); +SQLSTATE +20000 +SELECT '-3-', @x; +-3- @x +-3- 1 +CALL sp4(); +SQLSTATE +SQLEXCEPTION +SELECT '-4-', @x; +-4- @x +-4- 1 +DROP PROCEDURE sp0; +DROP PROCEDURE sp1; +DROP PROCEDURE sp2; +DROP PROCEDURE sp3; +DROP PROCEDURE sp4; + +Testcase 3.1.2.65: +------------------ + +Ensure that FETCH <cursor name> returns the first row of the cursor_s result set +the first time FETCH is executed, that it returns each subsequent row of the +cursor_s result set each of the subsequent times FETCH is executed, and that it +returns a NOT FOUND warning if it is executed after the last row of the cursor_s +result set has already been fetched. +-------------------------------------------------------------------------------- +DROP PROCEDURE IF EXISTS sp1; +DROP TABLE IF EXISTS temp; +CREATE TABLE temp( +cnt INT, +f1 CHAR(20), +f2 CHAR(20), +f3 INT, +f4 CHAR(20), +f5 INT); +INSERT INTO temp VALUES(0, 'onip', 'abc', 8760, 'xyz', 10); +CREATE PROCEDURE sp1( ) +BEGIN +declare proceed int default 1; +declare count integer default 1; +declare f1_value char(20); +declare f2_value char(20); +declare f5_value char(20); +declare f4_value integer; +declare f6_value integer; +declare cur1 cursor for SELECT f1, f2, f4, f5, f6 from t2 +where f4 >=-5000 order by f4 limit 3; +open cur1; +while proceed do +SELECT count AS 'loop'; +fetch cur1 into f1_value, f2_value, f4_value, f5_value, f6_value; +insert into temp values (count, f1_value, f2_value, f4_value, f5_value, f6_value); +set count = count + 1; +END while; +END// +CALL sp1(); +loop +1 +loop +2 +loop +3 +loop +4 +ERROR 02000: No data - zero rows fetched, selected, or processed +SELECT * FROM temp; +cnt f1 f2 f3 f4 f5 +0 onip abc 8760 xyz 10 +1 a` a` -5000 a` -5000 +2 aaa aaa -4999 aaa -4999 +3 abaa abaa -4998 abaa -4998 +DROP TABLE temp; +DROP PROCEDURE sp1; + +Testcase 3.1.2.68: +------------------ + +Ensure that FETCH <cursor name> fails with an appropriate error message if the +number of columns to be fetched does not match the number of variables specified +by the FETCH statement. +-------------------------------------------------------------------------------- +DROP PROCEDURE IF EXISTS sp1; +DROP PROCEDURE IF EXISTS sp2; +--> not enough columns in FETCH statement +CREATE PROCEDURE sp1( ) +BEGIN +declare newf1 char(20); +declare cur1 cursor for SELECT f1, f2 from t2 limit 10; +declare continue handler for sqlstate '02000' SELECT 'HANDLER executed.' AS ''; +BEGIN +open cur1; +fetch cur1 into newf1; +SELECT newf1; +close cur1; +END; +END// +--> too many columns in FETCH statement +CREATE PROCEDURE sp2( ) +BEGIN +declare newf1 char(20); +declare newf2 char(20); +declare cur1 cursor for SELECT f1 from t2 limit 10; +declare continue handler for sqlstate '02000' SELECT 'HANDLER executed.' AS ''; +BEGIN +open cur1; +fetch cur1 into newf1, newf2; +SELECT newf1, newf2; +close cur1; +END; +END// +--> not enough columns in FETCH statement +CALL sp1(); +ERROR HY000: Incorrect number of FETCH variables +--> too many columns in FETCH statement +CALL sp2(); +ERROR HY000: Incorrect number of FETCH variables +DROP PROCEDURE sp1; +DROP PROCEDURE sp2; + +Testcase 3.1.2.75: +------------------ + +Ensure that, for nested compound statements, a cursor that was declared and +opened during an outer level of the statement is not closed when an inner level +of a compound statement ends. +-------------------------------------------------------------------------------- +DROP TABLE IF EXISTS temp1; +DROP PROCEDURE IF EXISTS sp1; +create table temp1( f0 char(20), f1 char(20), f2 char(20), f3 int, f4 char(20) ); +SELECT f1, f2, f4, f5 from t2 order by f4; +f1 f2 f4 f5 +a` a` -5000 a` +aaa aaa -4999 aaa +abaa abaa -4998 abaa +acaaa acaaa -4997 acaaa +adaaaa adaaaa -4996 adaaaa +aeaaaaa aeaaaaa -4995 aeaaaaa +afaaaaaa afaaaaaa -4994 afaaaaaa +agaaaaaaa agaaaaaaa -4993 agaaaaaaa +a^aaaaaaaa a^aaaaaaaa -4992 a^aaaaaaaa +a_aaaaaaaaa a_aaaaaaaaa -4991 a_aaaaaaaaa +CREATE PROCEDURE sp1( ) +BEGIN +declare count integer; +declare from0 char(20); +declare newf1 char(20); +declare newf2 char(20); +declare newf5 char(20); +declare newf4 integer; +declare cur1 cursor for SELECT f1, f2, f4, f5 from t2 where f4 >= -5000 order by f4 limit 5; +declare cur2 cursor for SELECT f1, f2, f4, f5 from t2 where f4 >= -5000 order by f4 limit 5; +open cur1; +open cur2; +BEGIN +declare continue handler for sqlstate '02000' set count=1; +fetch cur1 into newf1, newf2, newf4, newf5; +SELECT '-1-', count, newf1, newf2, newf4, newf5; +insert into temp1 values ('cur1_out', newf1, newf2, newf4, newf5); +set count= 4; +BEGIN +while count> 0 do +fetch cur1 into newf1, newf2, newf4, newf5; +SELECT '-2-', count, newf1, newf2, newf4, newf5; +set count = count- 1; +END while; +SELECT '-3-', count, newf1, newf2, newf4, newf4; +END; +BEGIN +fetch cur1 into newf1, newf2, newf4, newf5; +SELECT '-4-', newf1, newf2, newf4, newf5; +insert into temp1 values ('cur1_in', newf1, newf2, newf4, newf5); +END; +fetch cur2 into newf1, newf2, newf4, newf5; +SELECT '-5-', newf1, newf2, newf4, newf5; +insert into temp1 values ('cur2', newf1, newf2, newf4, newf5); +close cur1; +END; +fetch cur2 into newf1, newf2, newf4, newf5; +SELECT '-6-', newf1, newf2, newf4, newf5; +close cur2; +END// +CALL sp1(); +-1- count newf1 newf2 newf4 newf5 +-1- NULL a` a` -5000 a` +-2- count newf1 newf2 newf4 newf5 +-2- 4 aaa aaa -4999 aaa +-2- count newf1 newf2 newf4 newf5 +-2- 3 abaa abaa -4998 abaa +-2- count newf1 newf2 newf4 newf5 +-2- 2 acaaa acaaa -4997 acaaa +-2- count newf1 newf2 newf4 newf5 +-2- 1 adaaaa adaaaa -4996 adaaaa +-3- count newf1 newf2 newf4 newf4 +-3- 0 adaaaa adaaaa -4996 -4996 +-4- newf1 newf2 newf4 newf5 +-4- adaaaa adaaaa -4996 adaaaa +-5- newf1 newf2 newf4 newf5 +-5- a` a` -5000 a` +-6- newf1 newf2 newf4 newf5 +-6- aaa aaa -4999 aaa +SELECT * from temp1; +f0 f1 f2 f3 f4 +cur1_out a` a` -5000 a` +cur1_in adaaaa adaaaa -4996 adaaaa +cur2 a` a` -5000 a` +DROP PROCEDURE sp1; +drop table temp1; + +Testcase 3.1.2.76: +------------------ + +Ensure that all cursors operate asensitively, so that there is no concurrency +conflict between cursors operating on the same, or similar, sets of results +during execution of one or more stored procedures. +-------------------------------------------------------------------------------- +DROP PROCEDURE IF EXISTS sp1; +drop table IF EXISTS temp1; +drop table IF EXISTS temp2; +create table temp1( f0 char(10), cnt int, f1 char(20), f2 char(20), f3 date, f4 integer ); +create table temp2( f0 char(10), cnt int, f1 char(20), f2 char(20), f3 date, f4 integer ); +CREATE PROCEDURE sp_inner( ) +BEGIN +declare proceed int default 1; +declare i_count integer default 20; +declare i_newf1 char(20); +declare i_newf2 char(20); +declare i_newf3 date; +declare i_newf4 integer; +declare i_newf11 char(20); +declare i_newf12 char(20); +declare i_newf13 date; +declare i_newf14 integer; +declare cur1 cursor for SELECT f1, f2, f3, f4 from t2 +where f4>=-5000 order by f4 limit 4; +declare cur2 cursor for SELECT f1, f2, f3, f4 from t2 +where f4>=-5000 order by f4 limit 3; +declare continue handler for sqlstate '02000' set proceed=0; +open cur1; +open cur2; +set i_count = 10; +while proceed do +fetch cur1 into i_newf1, i_newf2, i_newf3, i_newf4; +IF proceed THEN +insert into temp1 values ('sp_inner', i_count, i_newf1, i_newf2, i_newf3, i_newf4); +fetch cur2 into i_newf11, i_newf12, i_newf13, i_newf14; +IF proceed THEN +insert into temp2 values ('sp_inner', i_count, i_newf11, i_newf12, i_newf13, i_newf14); +END IF; +END IF; +set i_count = i_count - 1; +END while; +close cur1; +close cur2; +END// +CREATE PROCEDURE sp_outer( ) +BEGIN +DECLARE proceed INT DEFAULT 1; +DECLARE o_count INTEGER DEFAULT 20; +DECLARE o_newf1 CHAR(20); +DECLARE o_newf2 CHAR(20); +DECLARE o_newf3 DATE; +DECLARE o_newf4 INTEGER; +DECLARE o_newf11 CHAR(20); +DECLARE o_newf12 CHAR(20); +DECLARE o_newf13 DATE; +DECLARE o_newf14 INTEGER; +DECLARE cur1 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 +WHERE f4>=-5000 ORDER BY f4 LIMIT 5; +DECLARE cur2 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 +WHERE f4>=-5000 ORDER BY f4 LIMIT 5; +DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET proceed=0; +OPEN cur1; +OPEN cur2; +SET o_count = 1; +WHILE proceed DO +FETCH cur1 INTO o_newf1, o_newf2, o_newf3, o_newf4; +IF proceed THEN +INSERT INTO temp1 VALUES ('_sp_out_', o_count, o_newf1, o_newf2, o_newf3, o_newf4); +CALL sp_inner(); +FETCH cur2 INTO o_newf11, o_newf12, o_newf13, o_newf14; +IF proceed THEN +INSERT INTO temp2 VALUES ('_sp_out_', o_count, o_newf11, o_newf12, o_newf13, o_newf14); +END IF; +END IF; +SET o_count = o_count + 1; +END WHILE; +CLOSE cur1; +CLOSE cur2; +END// +CALL sp_outer(); +SELECT * FROM temp1; +f0 cnt f1 f2 f3 f4 +_sp_out_ 1 a` a` 1000-01-01 -5000 +sp_inner 10 a` a` 1000-01-01 -5000 +sp_inner 9 aaa aaa 1000-01-02 -4999 +sp_inner 8 abaa abaa 1000-01-03 -4998 +sp_inner 7 acaaa acaaa 1000-01-04 -4997 +_sp_out_ 2 aaa aaa 1000-01-02 -4999 +sp_inner 10 a` a` 1000-01-01 -5000 +sp_inner 9 aaa aaa 1000-01-02 -4999 +sp_inner 8 abaa abaa 1000-01-03 -4998 +sp_inner 7 acaaa acaaa 1000-01-04 -4997 +_sp_out_ 3 abaa abaa 1000-01-03 -4998 +sp_inner 10 a` a` 1000-01-01 -5000 +sp_inner 9 aaa aaa 1000-01-02 -4999 +sp_inner 8 abaa abaa 1000-01-03 -4998 +sp_inner 7 acaaa acaaa 1000-01-04 -4997 +_sp_out_ 4 acaaa acaaa 1000-01-04 -4997 +sp_inner 10 a` a` 1000-01-01 -5000 +sp_inner 9 aaa aaa 1000-01-02 -4999 +sp_inner 8 abaa abaa 1000-01-03 -4998 +sp_inner 7 acaaa acaaa 1000-01-04 -4997 +_sp_out_ 5 adaaaa adaaaa 1000-01-05 -4996 +sp_inner 10 a` a` 1000-01-01 -5000 +sp_inner 9 aaa aaa 1000-01-02 -4999 +sp_inner 8 abaa abaa 1000-01-03 -4998 +sp_inner 7 acaaa acaaa 1000-01-04 -4997 +SELECT * FROM temp2; +f0 cnt f1 f2 f3 f4 +sp_inner 10 a` a` 1000-01-01 -5000 +sp_inner 9 aaa aaa 1000-01-02 -4999 +sp_inner 8 abaa abaa 1000-01-03 -4998 +_sp_out_ 1 a` a` 1000-01-01 -5000 +sp_inner 10 a` a` 1000-01-01 -5000 +sp_inner 9 aaa aaa 1000-01-02 -4999 +sp_inner 8 abaa abaa 1000-01-03 -4998 +_sp_out_ 2 aaa aaa 1000-01-02 -4999 +sp_inner 10 a` a` 1000-01-01 -5000 +sp_inner 9 aaa aaa 1000-01-02 -4999 +sp_inner 8 abaa abaa 1000-01-03 -4998 +_sp_out_ 3 abaa abaa 1000-01-03 -4998 +sp_inner 10 a` a` 1000-01-01 -5000 +sp_inner 9 aaa aaa 1000-01-02 -4999 +sp_inner 8 abaa abaa 1000-01-03 -4998 +_sp_out_ 4 acaaa acaaa 1000-01-04 -4997 +sp_inner 10 a` a` 1000-01-01 -5000 +sp_inner 9 aaa aaa 1000-01-02 -4999 +sp_inner 8 abaa abaa 1000-01-03 -4998 +_sp_out_ 5 adaaaa adaaaa 1000-01-05 -4996 +DROP PROCEDURE sp_outer; +DROP PROCEDURE sp_inner; +DROP TABLE temp1; +DROP TABLE temp2; + +--source suite/funcs_1/storedproc/cleanup_sp_tb.inc +-------------------------------------------------------------------------------- +DROP DATABASE IF EXISTS db_storedproc; +DROP DATABASE IF EXISTS db_storedproc_1; + +. +++ END OF SCRIPT +++ +-------------------------------------------------------------------------------- |