mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			491 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			491 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
 | 
						|
--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 = myisam;
 | 
						|
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 = myisam;
 | 
						|
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 = myisam;
 | 
						|
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 = myisam;
 | 
						|
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 = myisam;
 | 
						|
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 = myisam;
 | 
						|
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 = myisam;
 | 
						|
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 = myisam;
 | 
						|
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 = myisam;
 | 
						|
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 = myisam;
 | 
						|
load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11;
 | 
						|
 | 
						|
Section 3.1.3 - Syntax checks for the stored procedure-specific flow
 | 
						|
control statements IF, CASE, LOOP, LEAVE, ITERATE, REPEAT, WHILE:
 | 
						|
--------------------------------------------------------------------------------
 | 
						|
 | 
						|
Testcase 3.1.3.7:
 | 
						|
-----------------
 | 
						|
 | 
						|
Ensure that the IF statement acts correctly for all variants, including cases
 | 
						|
where statements are nested.
 | 
						|
--------------------------------------------------------------------------------
 | 
						|
DROP TABLE IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
DROP PROCEDURE IF EXISTS sp9;
 | 
						|
CREATE TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742( f1 CHAR(20), f2 VARCHAR(20), f3 SMALLINT);
 | 
						|
CREATE PROCEDURE sp9( action char(20), subaction char(20) )
 | 
						|
BEGIN
 | 
						|
if action = 'action' then
 | 
						|
if subaction = 'subaction' then
 | 
						|
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'action', 'subaction' , 1);
 | 
						|
else
 | 
						|
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'action', 'none' , 2);
 | 
						|
END if;
 | 
						|
else
 | 
						|
if subaction = 'subaction'
 | 
						|
      then
 | 
						|
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'none', 'subaction' , 3);
 | 
						|
elseif subaction = 'subaction1'
 | 
						|
      then
 | 
						|
BEGIN
 | 
						|
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values ('none', 'subaction1', 4);
 | 
						|
END;
 | 
						|
else
 | 
						|
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'none', 'none' , 5);
 | 
						|
END if;
 | 
						|
END if;
 | 
						|
END//
 | 
						|
CALL sp9( 'action', 'subaction' );
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742 where f3=1;
 | 
						|
f1	f2	f3
 | 
						|
action	subaction	1
 | 
						|
CALL sp9( 'temp', 'subaction' );
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742 where f3=3;
 | 
						|
f1	f2	f3
 | 
						|
none	subaction	3
 | 
						|
CALL sp9( 'temp', 'subaction1' );
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742 where f3=4;
 | 
						|
f1	f2	f3
 | 
						|
none	subaction1	4
 | 
						|
CALL sp9( 'action', 'temp' );
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742 where f3=2;
 | 
						|
f1	f2	f3
 | 
						|
action	none	2
 | 
						|
CALL sp9( 'temp', 'temp' );
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742 where f3=5;
 | 
						|
f1	f2	f3
 | 
						|
none	none	5
 | 
						|
DROP PROCEDURE sp9;
 | 
						|
DROP TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
 | 
						|
Testcase 3.1.3.8.:
 | 
						|
------------------
 | 
						|
 | 
						|
Ensure that the CASE statement acts correctly for all variants, including cases
 | 
						|
where statements are nested.
 | 
						|
--------------------------------------------------------------------------------
 | 
						|
drop table IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
DROP PROCEDURE IF EXISTS sp10;
 | 
						|
create table res_t3_itisalongname_1381742_itsaverylongname_1381742( f1 char(20), f2 varchar(20), f3 smallint);
 | 
						|
CREATE PROCEDURE sp10( action char(20), subaction char(20) )
 | 
						|
BEGIN
 | 
						|
case action
 | 
						|
when 'action' then
 | 
						|
case
 | 
						|
when subaction = 'subaction_1' then
 | 
						|
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'action', 'subaction_2' , 1);
 | 
						|
when subaction = 'subaction_2' then
 | 
						|
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'action', 'subaction_2' , 2);
 | 
						|
else
 | 
						|
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'action', 'none' , 3);
 | 
						|
END case;
 | 
						|
else
 | 
						|
case
 | 
						|
when subaction = 'subaction_1' then
 | 
						|
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'none', 'subaction_1' , 4);
 | 
						|
when subaction = 'subaction_2' then
 | 
						|
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'none', 'subaction_2' , 5);
 | 
						|
else
 | 
						|
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'none', 'none' , 6);
 | 
						|
END case;
 | 
						|
END case;
 | 
						|
END//
 | 
						|
CALL sp10( 'action', 'subaction_1' );
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
f1	f2	f3
 | 
						|
action	subaction_2	1
 | 
						|
delete from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
CALL sp10( 'action', 'subaction_2' );
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
f1	f2	f3
 | 
						|
action	subaction_2	2
 | 
						|
delete from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
CALL sp10( 'temp', 'subaction_1' );
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
f1	f2	f3
 | 
						|
none	subaction_1	4
 | 
						|
delete from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
CALL sp10( 'temp', 'subaction_2' );
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
f1	f2	f3
 | 
						|
none	subaction_2	5
 | 
						|
delete from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
CALL sp10( 'action', 'temp' );
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
f1	f2	f3
 | 
						|
action	none	3
 | 
						|
delete from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
CALL sp10( 'temp', 'temp' );
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
f1	f2	f3
 | 
						|
none	none	6
 | 
						|
DROP PROCEDURE sp10;
 | 
						|
DROP TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
 | 
						|
Testcase 3.1.3.9 + 3.1.3.15:
 | 
						|
----------------------------
 | 
						|
 | 
						|
09. Ensure that the LOOP statement acts correctly for all variants, including
 | 
						|
.   cases where statements are nested.
 | 
						|
15. Ensure that the LEAVE statement acts correctly for all variants, including
 | 
						|
.   cases where statements are nested.
 | 
						|
--------------------------------------------------------------------------------
 | 
						|
DROP TABLE IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
DROP PROCEDURE IF EXISTS sp11;
 | 
						|
CREATE TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742( f1 CHAR(20), f2 VARCHAR(20), f3 SMALLINT);
 | 
						|
CREATE PROCEDURE sp11( )
 | 
						|
BEGIN
 | 
						|
declare count1 integer default 1;
 | 
						|
declare count2 integer default 1;
 | 
						|
label1: loop
 | 
						|
if count2 > 3 then leave label1;
 | 
						|
END if;
 | 
						|
set count1 = 1;
 | 
						|
label2: loop
 | 
						|
if count1 > 4 then leave label2;
 | 
						|
END if;
 | 
						|
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'xyz' , 'pqr', count1);
 | 
						|
set count1 = count1 + 1;
 | 
						|
iterate label2;
 | 
						|
END loop label2;
 | 
						|
set count2 = count2 + 1;
 | 
						|
iterate label1;
 | 
						|
END loop label1;
 | 
						|
END//
 | 
						|
CALL sp11();
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
f1	f2	f3
 | 
						|
xyz	pqr	1
 | 
						|
xyz	pqr	2
 | 
						|
xyz	pqr	3
 | 
						|
xyz	pqr	4
 | 
						|
xyz	pqr	1
 | 
						|
xyz	pqr	2
 | 
						|
xyz	pqr	3
 | 
						|
xyz	pqr	4
 | 
						|
xyz	pqr	1
 | 
						|
xyz	pqr	2
 | 
						|
xyz	pqr	3
 | 
						|
xyz	pqr	4
 | 
						|
DROP PROCEDURE sp11;
 | 
						|
DROP TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
 | 
						|
Testcase 3.1.3.16:
 | 
						|
------------------
 | 
						|
 | 
						|
Ensure that the ITERATE statement acts correctly for all variants, including
 | 
						|
cases where statements are nested.
 | 
						|
(tests for this testcase are also included in other testcases)
 | 
						|
--------------------------------------------------------------------------------
 | 
						|
DROP PROCEDURE IF EXISTS sp31316;
 | 
						|
CREATE PROCEDURE sp31316( )
 | 
						|
BEGIN
 | 
						|
declare count1 integer default 1;
 | 
						|
declare count2 integer default 1;
 | 
						|
label1: loop
 | 
						|
if count2 > 3 then leave label1;
 | 
						|
END if;
 | 
						|
set count1 = 1;
 | 
						|
label2: loop
 | 
						|
if count1 > 4 then leave label2;
 | 
						|
END if;
 | 
						|
insert into temp values( count1, count2);
 | 
						|
set count1 = count1 + 1;
 | 
						|
iterate label3;
 | 
						|
END loop label2;
 | 
						|
set count2 = count2 + 1;
 | 
						|
iterate label1;
 | 
						|
END loop label1;
 | 
						|
END//
 | 
						|
ERROR 42000: ITERATE with no matching label: label3
 | 
						|
 | 
						|
Testcase 3.1.3.18:
 | 
						|
------------------
 | 
						|
 | 
						|
Ensure that the REPEAT statement acts correctly for all variants, including
 | 
						|
cases where statements are nested.
 | 
						|
--------------------------------------------------------------------------------
 | 
						|
DROP PROCEDURE IF EXISTS sp17;
 | 
						|
DROP TABLE IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
CREATE TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742( f1 CHAR(20), f2 VARCHAR(20), f3 SMALLINT);
 | 
						|
CREATE PROCEDURE sp17( )
 | 
						|
BEGIN
 | 
						|
declare count1 integer default 1;
 | 
						|
declare count2 integer default 1;
 | 
						|
repeat
 | 
						|
set count1 = count1 + 1;
 | 
						|
set count2 = 1;
 | 
						|
label1: repeat
 | 
						|
set count2 = count2 + 1;
 | 
						|
insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 values( 'xyz' , 'pqr', count1);
 | 
						|
until count2 > 3
 | 
						|
END repeat label1;
 | 
						|
until count1 > 3
 | 
						|
END repeat;
 | 
						|
END//
 | 
						|
CALL sp17();
 | 
						|
SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
f1	f2	f3
 | 
						|
xyz	pqr	2
 | 
						|
xyz	pqr	2
 | 
						|
xyz	pqr	2
 | 
						|
xyz	pqr	3
 | 
						|
xyz	pqr	3
 | 
						|
xyz	pqr	3
 | 
						|
xyz	pqr	4
 | 
						|
xyz	pqr	4
 | 
						|
xyz	pqr	4
 | 
						|
DROP PROCEDURE sp17;
 | 
						|
DROP TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742;
 | 
						|
 | 
						|
Testcase 3.1.3.24:
 | 
						|
------------------
 | 
						|
 | 
						|
Ensure that the WHILE statement acts correctly for all variants, including cases
 | 
						|
where statements are nested.
 | 
						|
--------------------------------------------------------------------------------
 | 
						|
drop table IF EXISTS res_t21;
 | 
						|
DROP PROCEDURE IF EXISTS sp21;
 | 
						|
create table res_t21(name text(10), surname blob(20), age_averylongfieldname_averylongname_1234569 smallint);
 | 
						|
insert into res_t21 values('ashwin', 'mokadam', 25);
 | 
						|
CREATE PROCEDURE sp21( )
 | 
						|
BEGIN
 | 
						|
declare count1 integer default 0;
 | 
						|
declare count2 integer default 0;
 | 
						|
while count1 < 3 do
 | 
						|
BEGIN
 | 
						|
declare ithisissamevariablename int default 100;
 | 
						|
SELECT ithisissamevariablename;
 | 
						|
BEGIN
 | 
						|
declare ithisissamevariablename int default 200;
 | 
						|
SELECT ithisissamevariablename;
 | 
						|
END;
 | 
						|
set count2 = 0;
 | 
						|
label1: while count2 < 3 do
 | 
						|
BEGIN
 | 
						|
declare count1 integer default 7;
 | 
						|
set count2 = count2 + 1;
 | 
						|
insert into res_t21 values( 'xyz' , 'pqr', count2);
 | 
						|
label2: while count1 < 10 do
 | 
						|
set count1 = count1 + 1;
 | 
						|
insert into res_t21 values( 'xyz' , 'pqr', count1);
 | 
						|
END while label2;
 | 
						|
END;
 | 
						|
END while label1;
 | 
						|
set count1 = count1 + 1;
 | 
						|
END;
 | 
						|
END while;
 | 
						|
END//
 | 
						|
CALL sp21();
 | 
						|
ithisissamevariablename
 | 
						|
100
 | 
						|
ithisissamevariablename
 | 
						|
200
 | 
						|
ithisissamevariablename
 | 
						|
100
 | 
						|
ithisissamevariablename
 | 
						|
200
 | 
						|
ithisissamevariablename
 | 
						|
100
 | 
						|
ithisissamevariablename
 | 
						|
200
 | 
						|
SELECT * from res_t21;
 | 
						|
name	surname	age_averylongfieldname_averylongname_1234569
 | 
						|
ashwin	mokadam	25
 | 
						|
xyz	pqr	1
 | 
						|
xyz	pqr	8
 | 
						|
xyz	pqr	9
 | 
						|
xyz	pqr	10
 | 
						|
xyz	pqr	2
 | 
						|
xyz	pqr	8
 | 
						|
xyz	pqr	9
 | 
						|
xyz	pqr	10
 | 
						|
xyz	pqr	3
 | 
						|
xyz	pqr	8
 | 
						|
xyz	pqr	9
 | 
						|
xyz	pqr	10
 | 
						|
xyz	pqr	1
 | 
						|
xyz	pqr	8
 | 
						|
xyz	pqr	9
 | 
						|
xyz	pqr	10
 | 
						|
xyz	pqr	2
 | 
						|
xyz	pqr	8
 | 
						|
xyz	pqr	9
 | 
						|
xyz	pqr	10
 | 
						|
xyz	pqr	3
 | 
						|
xyz	pqr	8
 | 
						|
xyz	pqr	9
 | 
						|
xyz	pqr	10
 | 
						|
xyz	pqr	1
 | 
						|
xyz	pqr	8
 | 
						|
xyz	pqr	9
 | 
						|
xyz	pqr	10
 | 
						|
xyz	pqr	2
 | 
						|
xyz	pqr	8
 | 
						|
xyz	pqr	9
 | 
						|
xyz	pqr	10
 | 
						|
xyz	pqr	3
 | 
						|
xyz	pqr	8
 | 
						|
xyz	pqr	9
 | 
						|
xyz	pqr	10
 | 
						|
DROP PROCEDURE sp21;
 | 
						|
drop table res_t21;
 | 
						|
 | 
						|
Testcase 3.1.3.30:
 | 
						|
------------------
 | 
						|
 | 
						|
Ensure that multiple cases of all possible combinations of the control flow
 | 
						|
statements, nested within multiple compound statements within a stored
 | 
						|
procedure, always act correctly and return the expected result.
 | 
						|
--------------------------------------------------------------------------------
 | 
						|
DROP TABLE IF EXISTS res_tbl;
 | 
						|
DROP PROCEDURE IF EXISTS sp31330;
 | 
						|
create table res_tbl (f1 int, f2 text, f3 blob, f4 date,
 | 
						|
f5 set('one', 'two', 'three', 'four', 'five') default 'one');
 | 
						|
CREATE PROCEDURE sp31330 (path int)
 | 
						|
BEGIN
 | 
						|
declare count int default 1;
 | 
						|
declare var1 text;
 | 
						|
declare var2 blob;
 | 
						|
declare var3 date;
 | 
						|
declare var4 set('one', 'two', 'three', 'four', 'five') DEFAULT 'five';
 | 
						|
case
 | 
						|
when path=1 then
 | 
						|
set var3 = '2000-11-09';
 | 
						|
set var1 = 'flowing through case 1';
 | 
						|
label1: loop
 | 
						|
if count > 5 then
 | 
						|
if var4=1000 then
 | 
						|
set var2 = 'exiting out of case 1 - invalid SET';
 | 
						|
END if;
 | 
						|
if var4='two' then
 | 
						|
set var2 = 'exiting out of case 1';
 | 
						|
END if;
 | 
						|
insert into res_tbl values (1, var1, var2, var3, (count-2));
 | 
						|
leave label1;
 | 
						|
elseif count = 5 then
 | 
						|
set count= count + 2;
 | 
						|
set var4='two';
 | 
						|
iterate label1;
 | 
						|
else
 | 
						|
set count= count + 1;
 | 
						|
END if;
 | 
						|
set var4='one';
 | 
						|
END loop label1;
 | 
						|
when path=2 then
 | 
						|
set var3 = '1989-11-09';
 | 
						|
set var1 = 'flowing through case 2';
 | 
						|
set @count3=0;
 | 
						|
label2: repeat
 | 
						|
set count=count + 1;
 | 
						|
set @count2=1;
 | 
						|
while @count2 <= 5 do
 | 
						|
set @count2 = @count2 + 1;
 | 
						|
END while;
 | 
						|
SELECT @count2;
 | 
						|
set @count3=@count3 + @count2;
 | 
						|
until count > 5
 | 
						|
END repeat label2;
 | 
						|
set var2 = 'exiting out of case 2';
 | 
						|
set var4 = count-3;
 | 
						|
SELECT @count3;
 | 
						|
insert into res_tbl values (2, var1, var2, var3, var4);
 | 
						|
ELSE BEGIN
 | 
						|
set @error_opt='undefined path specified';
 | 
						|
SELECT @error_opt;
 | 
						|
END;
 | 
						|
END case;
 | 
						|
END//
 | 
						|
CALL sp31330();
 | 
						|
ERROR 42000: Incorrect number of arguments for PROCEDURE db_storedproc.sp31330; expected 1, got 0
 | 
						|
CALL sp31330(1);
 | 
						|
SELECT * from res_tbl;
 | 
						|
f1	f2	f3	f4	f5
 | 
						|
1	flowing through case 1	exiting out of case 1	2000-11-09	one,three
 | 
						|
CALL sp31330(2);
 | 
						|
@count2
 | 
						|
6
 | 
						|
@count2
 | 
						|
6
 | 
						|
@count2
 | 
						|
6
 | 
						|
@count2
 | 
						|
6
 | 
						|
@count2
 | 
						|
6
 | 
						|
@count3
 | 
						|
30
 | 
						|
SELECT * from res_tbl;
 | 
						|
f1	f2	f3	f4	f5
 | 
						|
1	flowing through case 1	exiting out of case 1	2000-11-09	one,three
 | 
						|
2	flowing through case 2	exiting out of case 2	1989-11-09	one,two
 | 
						|
CALL sp31330(4);
 | 
						|
@error_opt
 | 
						|
undefined path specified
 | 
						|
DROP PROCEDURE sp31330;
 | 
						|
drop table res_tbl;
 | 
						|
 | 
						|
--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 +++
 | 
						|
--------------------------------------------------------------------------------
 |