memory_storedproc_02.result
来自「这个文件是windows mysql源码」· RESULT 代码 · 共 1,399 行 · 第 1/3 页
RESULT
1,399 行
SET @x = 5;FETCH cur1 INTO f1_value;SET @x = 6;END//CREATE PROCEDURE sp1()BEGINDECLARE 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 cvWHEN 2 THEN SET @x = 2;WHEN 3 THEN SET @x = 3;END case;SET @x = 4;SELECT f1, f2 FROM t2UNIONSELECT f1, f2,3 FROM t2;SET @x = 5;FETCH cur1 INTO f1_value;SET @x = 6;END//CREATE PROCEDURE sp2()BEGINDECLARE 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 cvWHEN 2 THEN SET @x = 2;WHEN 3 THEN SET @x = 3;END case;SET @x = 4;SELECT f1, f2 FROM t2UNIONSELECT f1, f2,3 FROM t2;SET @x = 5;FETCH cur1 INTO f1_value;SET @x = 6;END//CREATE PROCEDURE sp3()BEGINDECLARE 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 cvWHEN 2 THEN SET @x = 2;WHEN 3 THEN SET @x = 3;END case;SET @x = 4;SELECT f1, f2 FROM t2UNIONSELECT f1, f2,3 FROM t2;SET @x = 5;FETCH cur1 INTO f1_value;SET @x = 6;END//CREATE PROCEDURE sp4()BEGINDECLARE 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 cvWHEN 2 THEN SET @x = 2;WHEN 3 THEN SET @x = 3;END case;SET @x = 4;SELECT f1, f2 FROM t2UNIONSELECT 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 statementSELECT '-0-', @x;-0- @x-0- 1CALL sp1();SQLSTATE20000SQLSTATE21000SQLSTATE24000SELECT '-1-', @x;-1- @x-1- 6CALL sp2();SQLSTATESQLEXCEPTIONSQLSTATESQLEXCEPTIONSQLSTATE24000SELECT '-2-', @x;-2- @x-2- 6CALL sp3();SQLSTATE20000SELECT '-3-', @x;-3- @x-3- 1CALL sp4();SQLSTATESQLEXCEPTIONSELECT '-4-', @x;-4- @x-4- 1DROP 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 setthe first time FETCH is executed, that it returns each subsequent row of thecursor_s result set each of the subsequent times FETCH is executed, and that itreturns a NOT FOUND warning if it is executed after the last row of the cursor_sresult 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( )BEGINdeclare 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 t2where f4 >=-5000 order by f4 limit 3;open cur1;while proceed doSELECT 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();loop1loop2loop3loop4ERROR 02000: No data - zero rows fetched, selected, or processedSELECT * FROM temp;cnt f1 f2 f3 f4 f50 onip abc 8760 xyz 101 a` a` -5000 a` -50002 aaa aaa -4999 aaa -49993 abaa abaa -4998 abaa -4998DROP TABLE temp;DROP PROCEDURE sp1;Testcase 3.1.2.68:------------------Ensure that FETCH <cursor name> fails with an appropriate error message if thenumber of columns to be fetched does not match the number of variables specifiedby the FETCH statement.--------------------------------------------------------------------------------DROP PROCEDURE IF EXISTS sp1;DROP PROCEDURE IF EXISTS sp2;--> not enough columns in FETCH statementCREATE PROCEDURE sp1( )BEGINdeclare newf1 char(20);declare cur1 cursor for SELECT f1, f2 from t2 limit 10;declare continue handler for sqlstate '02000' SELECT 'HANDLER executed.' AS '';BEGINopen cur1;fetch cur1 into newf1;SELECT newf1;close cur1;END;END//--> too many columns in FETCH statementCREATE PROCEDURE sp2( )BEGINdeclare 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 '';BEGINopen cur1;fetch cur1 into newf1, newf2;SELECT newf1, newf2;close cur1;END;END//--> not enough columns in FETCH statementCALL sp1();ERROR HY000: Incorrect number of FETCH variables--> too many columns in FETCH statementCALL sp2();ERROR HY000: Incorrect number of FETCH variablesDROP PROCEDURE sp1;DROP PROCEDURE sp2;Testcase 3.1.2.75:------------------Ensure that, for nested compound statements, a cursor that was declared andopened during an outer level of the statement is not closed when an inner levelof 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 f5a` a` -5000 a`aaa aaa -4999 aaaabaa abaa -4998 abaaacaaa acaaa -4997 acaaaadaaaa adaaaa -4996 adaaaaaeaaaaa aeaaaaa -4995 aeaaaaaafaaaaaa afaaaaaa -4994 afaaaaaaagaaaaaaa agaaaaaaa -4993 agaaaaaaaa^aaaaaaaa a^aaaaaaaa -4992 a^aaaaaaaaa_aaaaaaaaa a_aaaaaaaaa -4991 a_aaaaaaaaaCREATE PROCEDURE sp1( )BEGINdeclare 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;BEGINdeclare 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;BEGINwhile count > 0 dofetch 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;BEGINfetch 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 aaaSELECT * from temp1;f0 f1 f2 f3 f4cur1_out a` a` -5000 a`cur1_in adaaaa adaaaa -4996 adaaaacur2 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 concurrencyconflict between cursors operating on the same, or similar, sets of resultsduring 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( )BEGINdeclare 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 t2where f4>=-5000 order by f4 limit 4;declare cur2 cursor for SELECT f1, f2, f3, f4 from t2where 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 dofetch cur1 into i_newf1, i_newf2, i_newf3, i_newf4;IF proceed THENinsert 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 THENinsert 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( )BEGINDECLARE 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 t2WHERE f4>=-5000 ORDER BY f4 LIMIT 5;DECLARE cur2 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2WHERE 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 DOFETCH cur1 INTO o_newf1, o_newf2, o_newf3, o_newf4;IF proceed THENINSERT 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 THENINSERT 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 -5000sp_inner 10 a` a` 1000-01-01 -5000sp_inner 9 aaa aaa 1000-01-02 -4999sp_inner 8 abaa abaa 1000-01-03 -4998sp_inner 7 acaaa acaaa 1000-01-04 -4997_sp_out_ 2 aaa aaa 1000-01-02 -4999sp_inner 10 a` a` 1000-01-01 -5000sp_inner 9 aaa aaa 1000-01-02 -4999sp_inner 8 abaa abaa 1000-01-03 -4998sp_inner 7 acaaa acaaa 1000-01-04 -4997_sp_out_ 3 abaa abaa 1000-01-03 -4998sp_inner 10 a` a` 1000-01-01 -5000sp_inner 9 aaa aaa 1000-01-02 -4999sp_inner 8 abaa abaa 1000-01-03 -4998sp_inner 7 acaaa acaaa 1000-01-04 -4997_sp_out_ 4 acaaa acaaa 1000-01-04 -4997sp_inner 10 a` a` 1000-01-01 -5000sp_inner 9 aaa aaa 1000-01-02 -4999sp_inner 8 abaa abaa 1000-01-03 -4998sp_inner 7 acaaa acaaa 1000-01-04 -4997_sp_out_ 5 adaaaa adaaaa 1000-01-05 -4996sp_inner 10 a` a` 1000-01-01 -5000sp_inner 9 aaa aaa 1000-01-02 -4999sp_inner 8 abaa abaa 1000-01-03 -4998sp_inner 7 acaaa acaaa 1000-01-04 -4997SELECT * FROM temp2;f0 cnt f1 f2 f3 f4sp_inner 10 a` a` 1000-01-01 -5000sp_inner 9 aaa aaa 1000-01-02 -4999sp_inner 8 abaa abaa 1000-01-03 -4998_sp_out_ 1 a` a` 1000-01-01 -5000sp_inner 10 a` a` 1000-01-01 -5000sp_inner 9 aaa aaa 1000-01-02 -4999sp_inner 8 abaa abaa 1000-01-03 -4998_sp_out_ 2 aaa aaa 1000-01-02 -4999sp_inner 10 a` a` 1000-01-01 -5000sp_inner 9 aaa aaa 1000-01-02 -4999sp_inner 8 abaa abaa 1000-01-03 -4998_sp_out_ 3 abaa abaa 1000-01-03 -4998sp_inner 10 a` a` 1000-01-01 -5000sp_inner 9 aaa aaa 1000-01-02 -4999sp_inner 8 abaa abaa 1000-01-03 -4998_sp_out_ 4 acaaa acaaa 1000-01-04 -4997sp_inner 10 a` a` 1000-01-01 -5000sp_inner 9 aaa aaa 1000-01-02 -4999sp_inner 8 abaa abaa 1000-01-03 -4998_sp_out_ 5 adaaaa adaaaa 1000-01-05 -4996DROP 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 +++--------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?