实例一:无参的存储过程
| $conn = mysql_connect('localhost','root','root') or die ("数据连接错误!!!");mysql_select_db('test',$conn);$sql = "create procedure myproce()beginINSERT INTO user (id, username, sex) VALUES (NULL, 's', '0');end;";mysql_query($sql); |
实例二:传入参数的存储过程
| $sql = "create procedure myproce2(in score int)beginif score >= 60 thenselect 'pass';elseselect 'no';end if;end;";mysql_query($sql); |
实例三:传出参数的存储过程
| 123456789101112 | $sql = "create procedure myproce3(out score int)beginset score=100;end;";mysql_query($sql); |
实例四:传出参数的inout存储过程
| 1234567891011 | $sql = "create procedure myproce4(inout sexflag int)beginSELECT * FROM user WHERe sex = sexflag;end;";mysql_query($sql); |
实例五:使用变量的存储过程
| $sql = "create procedure myproce5(in a int,in b int)begindeclare s int default 0;set s=a+b;select s;end;";mysql_query($sql); |
实例六:case语法
| $sql = "create procedure myproce6(in score int)begincase scorewhen 60 then select '及格';when 80 then select '及良好';when 100 then select '优秀';else select '未知分数';end case;end;";mysql_query($sql); |
实例七:循环语句
| $sql = "create procedure myproce7()begindeclare i int default 0;declare j int default 0;while i<10 doset j=j+i;set i=i+1;end while;select j;end;";mysql_query($sql); |
实例八:repeat语句
| $sql = "create procedure myproce8()begindeclare i int default 0;declare j int default 0;repeatset j=j+i;set i=i+1;until j>=10end repeat;select j;end;";mysql_query($sql); |
实例九:loop语句
| $sql = "create procedure myproce9()begindeclare i int default 0;declare s int default 0;loop_label:loopset s=s+i;set i=i+1;if i>=5 thenleave loop_label;end if;end loop;select s;end;";mysql_query($sql); |
实例十:删除存储过程
| 1 | mysql_query("drop procedure if exists myproce"); |
实例十一:存储过程中的游标
总结:
1.存储过程可用于InnoDB或MyISAM类型的表
2.show procedure status显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等
3.SHOW CREATE PROCEDURE myproce显示某一个存储过程的详细信息