mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 04:22:27 +01:00
63 lines
1.2 KiB
Text
63 lines
1.2 KiB
Text
|
create procedure empty()
|
||
|
begin
|
||
|
end;
|
||
|
show procedure code empty;
|
||
|
Pos Instruction
|
||
|
drop procedure empty;
|
||
|
create function almost_empty()
|
||
|
returns int
|
||
|
return 0;
|
||
|
show function code almost_empty;
|
||
|
Pos Instruction
|
||
|
0 freturn 3 0
|
||
|
drop function almost_empty;
|
||
|
create procedure code_sample(x int, out err int, out nulls int)
|
||
|
begin
|
||
|
declare count int default 0;
|
||
|
set nulls = 0;
|
||
|
begin
|
||
|
declare c cursor for select name from t1;
|
||
|
declare exit handler for not found close c;
|
||
|
open c;
|
||
|
loop
|
||
|
begin
|
||
|
declare n varchar(20);
|
||
|
declare continue handler for sqlexception set err=1;
|
||
|
fetch c into n;
|
||
|
if isnull(n) then
|
||
|
set nulls = nulls + 1;
|
||
|
else
|
||
|
set count = count + 1;
|
||
|
update t2 set idx = count where name=n;
|
||
|
end if;
|
||
|
end;
|
||
|
end loop;
|
||
|
end;
|
||
|
select t.name, t.idx from t2 t order by idx asc;
|
||
|
end//
|
||
|
show procedure code code_sample;
|
||
|
Pos Instruction
|
||
|
0 set count@3 0
|
||
|
1 set nulls@2 0
|
||
|
2 cpush c@0
|
||
|
3 hpush_jump 6 4 EXIT
|
||
|
4 cclose c@0
|
||
|
5 hreturn 0 19
|
||
|
6 copen c@0
|
||
|
7 set n@4 NULL
|
||
|
8 hpush_jump 11 5 CONTINUE
|
||
|
9 set err@1 1
|
||
|
10 hreturn 5
|
||
|
11 cfetch c@0 n@4
|
||
|
12 jump_if_not 15 isnull(n@4)
|
||
|
13 set nulls@2 (nulls@2 + 1)
|
||
|
14 jump 17
|
||
|
15 set count@3 (count@3 + 1)
|
||
|
16 stmt 4 "update t2 set idx = count where name=n"
|
||
|
17 hpop 1
|
||
|
18 jump 7
|
||
|
19 hpop 1
|
||
|
20 cpop 1
|
||
|
21 stmt 0 "select t.name, t.idx from t2 t order ..."
|
||
|
drop procedure code_sample;
|