select name from mysql.proc where db='数据库名'; 或者 select routine_name from information_schema.routines where routine_schema='数据库名'; 或者 showprocedure status where db='数据库名';
DELIMITER // CREATEPROCEDURE proc2(INparameterint) begin declare var int; set var=parameter+1; if var=0then insertintoMATCHESvalues(17,9,9,9,9); end if; if parameter=0then updateMATCHESset LOST=LOST+1; else updateMATCHESset LOST=LOST+2; end if; end; // DELIMITER ;
2.2 case语句
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
DELIMITER // CREATEPROCEDURE proc3 (inparameterint) begin declare var int; set var=parameter+1; case var when0then insertintomatchesvalues(17,9,9,9,9); when1then insertintomatchesvalues(18,9,9,9,9); else insertintomatchesvalues(19,9,9,9,9); endcase; end; // DELIMITER ;
2.3 循环语句
2.3.1 while ···· end while
1 2 3 4 5 6 7 8 9 10 11 12
DELIMITER // CREATEPROCEDURE proc4 (inparameterint) begin declare var int; set var=0; while var<6 do insertintomatchesvalues(var,9,9,9,9); set var=var+1; end while; end; // DELIMITER ;
2.3.2 repeat···· end repeat 它在执行操作后检查结果,而 while 则是执行前进行检查。
1 2 3 4 5 6 7 8 9 10 11 12 13
DELIMITER // CREATEPROCEDURE proc5() begin declare v int; set v=0; repeat insertintomatchesvalues(v,8,8,8,8); set v=v+1; until v>=5 end repeat; end; // DELIMITER ;
DELIMITER // CREATEPROCEDURE proc6() begin declare v int; set v=0; LOOP_LABLE:loop insertintomatchesvalues(v,7,7,7,7); set v=v+1; if v >=5then leave LOOP_LABLE; end if; end loop; end; // DELIMITER ;
2.3.4 ITERATE迭代 ITERATE 通过引用复合语句的标号,来从新开始复合语句:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
DELIMITER // CREATEPROCEDURE proc10() begin declare v int; set v=0; LOOP_LABLE:loop if v=3then set v=v+2; ITERATE LOOP_LABLE; end if; insertintomatchesvalues(v,5,5,5,5); set v=v+1; if v>=5then leave LOOP_LABLE; end if; end loop; end; // DELIMITER ;