📄 sp.test
字号:
create procedure h_se() deterministicbegin -- integrity constraint violation declare continue handler for sqlstate '23000' select 'Outer (bad)' as 'h_se'; begin declare continue handler for 1062 -- ER_DUP_ENTRY select 'Inner (good)' as 'h_se'; insert into t3 values (1); end;end|create procedure h_ss() deterministicbegin -- integrity constraint violation declare continue handler for sqlstate '23000' select 'Outer (bad)' as 'h_ss'; begin -- integrity constraint violation declare continue handler for sqlstate '23000' select 'Inner (good)' as 'h_ss'; insert into t3 values (1); end;end|create procedure h_sn() deterministicbegin -- Note: '02000' is more specific than NOT FOUND ; -- there might be other not found states declare continue handler for sqlstate '02000' -- no data select 'Outer (good)' as 'h_sn'; begin declare x int; declare continue handler for not found select 'Inner (bad)' as 'h_sn'; select a into x from t3 where a = 42; end;end|create procedure h_sw() deterministicbegin -- data exception - numeric value out of range declare continue handler for sqlstate '22003' select 'Outer (good)' as 'h_sw'; begin declare continue handler for sqlwarning select 'Inner (bad)' as 'h_sw'; insert into t3 values (123456789012); end; delete from t3; insert into t3 values (1);end|create procedure h_sx() deterministicbegin -- integrity constraint violation declare continue handler for sqlstate '23000' select 'Outer (good)' as 'h_sx'; begin declare continue handler for sqlexception select 'Inner (bad)' as 'h_sx'; insert into t3 values (1); end;end|create procedure h_ne() deterministicbegin declare continue handler for not found select 'Outer (bad)' as 'h_ne'; begin declare x int; declare continue handler for 1329 -- ER_SP_FETCH_NO_DATA select 'Inner (good)' as 'h_ne'; select a into x from t3 where a = 42; end;end|create procedure h_ns() deterministicbegin declare continue handler for not found select 'Outer (bad)' as 'h_ns'; begin declare x int; declare continue handler for sqlstate '02000' -- no data select 'Inner (good)' as 'h_ns'; select a into x from t3 where a = 42; end;end|create procedure h_nn() deterministicbegin declare continue handler for not found select 'Outer (bad)' as 'h_nn'; begin declare x int; declare continue handler for not found select 'Inner (good)' as 'h_nn'; select a into x from t3 where a = 42; end;end|create procedure h_we() deterministicbegin declare continue handler for sqlwarning select 'Outer (bad)' as 'h_we'; begin declare continue handler for 1264 -- ER_WARN_DATA_OUT_OF_RANGE select 'Inner (good)' as 'h_we'; insert into t3 values (123456789012); end; delete from t3; insert into t3 values (1);end|create procedure h_ws() deterministicbegin declare continue handler for sqlwarning select 'Outer (bad)' as 'h_ws'; begin -- data exception - numeric value out of range declare continue handler for sqlstate '22003' select 'Inner (good)' as 'h_ws'; insert into t3 values (123456789012); end; delete from t3; insert into t3 values (1);end|create procedure h_ww() deterministicbegin declare continue handler for sqlwarning select 'Outer (bad)' as 'h_ww'; begin declare continue handler for sqlwarning select 'Inner (good)' as 'h_ww'; insert into t3 values (123456789012); end; delete from t3; insert into t3 values (1);end|create procedure h_xe() deterministicbegin declare continue handler for sqlexception select 'Outer (bad)' as 'h_xe'; begin declare continue handler for 1062 -- ER_DUP_ENTRY select 'Inner (good)' as 'h_xe'; insert into t3 values (1); end;end|create procedure h_xs() deterministicbegin declare continue handler for sqlexception select 'Outer (bad)' as 'h_xs'; begin -- integrity constraint violation declare continue handler for sqlstate '23000' select 'Inner (good)' as 'h_xs'; insert into t3 values (1); end;end|create procedure h_xx() deterministicbegin declare continue handler for sqlexception select 'Outer (bad)' as 'h_xx'; begin declare continue handler for sqlexception select 'Inner (good)' as 'h_xx'; insert into t3 values (1); end;end|call h_ee()|call h_es()|call h_en()|call h_ew()|call h_ex()|call h_se()|call h_ss()|call h_sn()|call h_sw()|call h_sx()|call h_ne()|call h_ns()|call h_nn()|call h_we()|call h_ws()|call h_ww()|call h_xe()|call h_xs()|call h_xx()|drop table t3|drop procedure h_ee|drop procedure h_es|drop procedure h_en|drop procedure h_ew|drop procedure h_ex|drop procedure h_se|drop procedure h_ss|drop procedure h_sn|drop procedure h_sw|drop procedure h_sx|drop procedure h_ne|drop procedure h_ns|drop procedure h_nn|drop procedure h_we|drop procedure h_ws|drop procedure h_ww|drop procedure h_xe|drop procedure h_xs|drop procedure h_xx|## Test cases for old bugs### BUG#822#--disable_warningsdrop procedure if exists bug822|--enable_warningscreate procedure bug822(a_id char(16), a_data int)begin declare n int; select count(*) into n from t1 where id = a_id and data = a_data; if n = 0 then insert into t1 (id, data) values (a_id, a_data); end if;end|delete from t1|call bug822('foo', 42)|call bug822('foo', 42)|call bug822('bar', 666)|select * from t1|delete from t1|drop procedure bug822|## BUG#1495#--disable_warningsdrop procedure if exists bug1495|--enable_warningscreate procedure bug1495()begin declare x int; select data into x from t1 order by id limit 1; if x > 10 then insert into t1 values ("less", x-10); else insert into t1 values ("more", x+10); end if;end|insert into t1 values ('foo', 12)|call bug1495()|delete from t1 where id='foo'|insert into t1 values ('bar', 7)|call bug1495()|delete from t1 where id='bar'|select * from t1|delete from t1|drop procedure bug1495|## BUG#1547#--disable_warningsdrop procedure if exists bug1547|--enable_warningscreate procedure bug1547(s char(16))begin declare x int; select data into x from t1 where s = id limit 1; if x > 10 then insert into t1 values ("less", x-10); else insert into t1 values ("more", x+10); end if;end|insert into t1 values ("foo", 12), ("bar", 7)|call bug1547("foo")|call bug1547("bar")|select * from t1|delete from t1|drop procedure bug1547|## BUG#1656#--disable_warningsdrop table if exists t70|--enable_warningscreate table t70 (s1 int,s2 int)|insert into t70 values (1,2)|--disable_warningsdrop procedure if exists bug1656|--enable_warningscreate procedure bug1656(out p1 int, out p2 int) select * into p1, p1 from t70|call bug1656(@1, @2)|select @1, @2|drop table t70|drop procedure bug1656|## BUG#1862#create table t3(a int)|--disable_warningsdrop procedure if exists bug1862|--enable_warningscreate procedure bug1862()begin insert into t3 values(2); flush tables;end|call bug1862()|# the second call caused a segmentationcall bug1862()|select * from t3|drop table t3|drop procedure bug1862|## BUG#1874#--disable_warningsdrop procedure if exists bug1874|--enable_warningscreate procedure bug1874()begin declare x int; declare y double; select max(data) into x from t1; insert into t2 values ("max", x, 0); select min(data) into x from t1; insert into t2 values ("min", x, 0); select sum(data) into x from t1; insert into t2 values ("sum", x, 0); select avg(data) into y from t1; insert into t2 values ("avg", 0, y);end|insert into t1 (data) values (3), (1), (5), (9), (4)|call bug1874()|select * from t2|delete from t1|delete from t2|drop procedure bug1874|## BUG#2260#--disable_warningsdrop procedure if exists bug2260|--enable_warningscreate procedure bug2260()begin declare v1 int; declare c1 cursor for select data from t1; declare continue handler for not found set @x2 = 1; open c1; fetch c1 into v1; set @x2 = 2; close c1;end|call bug2260()|select @x2|drop procedure bug2260|## BUG#2267 "Lost connect if stored procedure has SHOW FUNCTION STATUS"#--disable_warningsdrop procedure if exists bug2267_1|--enable_warningscreate procedure bug2267_1()begin show procedure status;end|--disable_warningsdrop procedure if exists bug2267_2|--enable_warningscreate procedure bug2267_2()begin show function status;end|--disable_warningsdrop procedure if exists bug2267_3|--enable_warningscreate procedure bug2267_3()begin show create procedure bug2267_1;end|--disable_warningsdrop procedure if exists bug2267_4|drop function if exists bug2267_4|--enable_warningscreate procedure bug2267_4()begin show create function bug2267_4;end|create function bug2267_4() returns int return 100|--replace_column 5 '0000-00-00 00:00:00' 6 '0000-00-00 00:00:00'call bug2267_1()|--replace_column 5 '0000-00-00 00:00:00' 6 '0000-00-00 00:00:00'call bug2267_2()|call bug2267_3()|call bug2267_4()|drop procedure bug2267_1|drop procedure bug2267_2|drop procedure bug2267_3|drop procedure bug2267_4|drop function bug2267_4|## BUG#2227#--disable_warningsdrop procedure if exists bug2227|--enable_warningscreate procedure bug2227(x int)begin declare y float default 2.6; declare z char(16) default "zzz"; select 1.3, x, y, 42, z;end|call bug2227(9)|drop procedure bug2227|## BUG#2614 "Stored procedure with INSERT ... SELECT that does not# contain any tables crashes server"#--disable_warningsdrop procedure if exists bug2614|--enable_warningscreate procedure bug2614()begin drop table if exists t3; create table t3 (id int default '0' not null); insert into t3 select 12; insert into t3 select * from t3;end|--disable_warningscall bug2614()|--enable_warningscall bug2614()|drop table t3|drop procedure bug2614|## BUG#2674#--disable_warningsdrop function if exists bug2674|--enable_warningscreate function bug2674() returns int return @@sort_buffer_size|set @osbs = @@sort_buffer_size|set @@sort_buffer_size = 262000|select bug2674()|drop function bug2674|set @@sort_buffer_size = @osbs|## BUG#3259#--disable_warningsdrop procedure if exists bug3259_1 |--enable_warningscreate procedure bug3259_1 () begin end|--disable_warningsdrop procedure if exists BUG3259_2 |--enable_warningscreate procedure BUG3259_2 () begin end|--disable_warningsdrop procedure if exists Bug3259_3 |--enable_warningscreate procedure Bug3259_3 () begin end|call BUG3259_1()|call BUG3259_1()|call bug3259_2()|call Bug3259_2()|call bug3259_3()|call bUG3259_3()|drop procedure bUg3259_1|drop procedure BuG3259_2|drop procedure BUG3259_3|## BUG#2772#--disable_warningsdrop function if exists bug2772|--enable_warningscreate function bug2772() returns char(10) character set latin2 return 'a'|select bug2772()|drop function bug2772|## BUG#2776#--disable_warningsdrop procedure if exists bug2776_1|--enable_warningscreate procedure bug2776_1(out x int)begin declare v int; set v = default; set x = v;end|--disable_warningsdrop procedure if exists bug2776_2|--enable_warningscreate procedure bug2776_2(out x int)begin declare v int default 42; set v = default; set x = v;end|set @x = 1|call bug2776_1(@x)|select @x|call bug2776_2(@x)|select @x|drop procedure bug2776_1|drop procedure bug2776_2|## BUG#2780#create table t3 (s1 smallint)|insert into t3 values (123456789012)|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -