mysql储存过程教学_MySQL之储存过程

我们大家都知道MySQL存储过程是从 MySQL 5.0 开始逐渐增加新的功能。存储过程在实际应用中也是优点大于缺点。不过最主要的还是执行效率和SQL 代码封装。特别是 SQL 代码封装功能,如果没有存储过程。

在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句。

特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在 PHP 代码中,让人不寒而栗。现在有了 MySQL 存储过程,业务逻辑可以封装存储过程中,这样不仅容易维护,而且执行效率也高。

实例一:无参的存储过程

$conn = mysql_connect(‘localhost’,’root’,’root’) or die (“数据连接错误!!!”);

mysql_select_db(‘test’,$conn);

$sql = ”

create procedure myproce()

begin

INSERT INTO user (id, username, sex) VALUES (NULL, ‘s’, ‘0’);

end;

“;

mysql_query($sql);//创建一个myproce的存储过程

$sql = “call test.myproce();”;

mysql_query($sql);//调用myproce的存储过程,则数据库中将增加一条新记录。

实例二:传入参数的存储过程

$sql = ”

create procedure myproce2(in score int)

begin

if score >= 60 then

select ‘pass’;

else

select ‘no’;

end if;

end;

“;

mysql_query($sql);//创建一个myproce2的存储过程

$sql = “call test.myproce2(70);”;

mysql_query($sql);//调用myproce2的存储过程,看不到效果,可以在cmd下看到结果。

实例三:传出参数的存储过程

$sql = ”

create procedure myproce3(out score int)

begin

set score=100;

end;

“;

mysql_query($sql);//创建一个myproce3的存储过程

$sql = “call test.myproce3(@score);”;

mysql_query($sql);//调用myproce3的存储过程

$result = mysql_query(‘select @score ;’);

$array = mysql_fetch_array($result);

echo ‘

’;print_r($array);

实例四:传出参数的inout存储过程

$sql = ”

create procedure myproce4(inout sexflag int)

begin

SELECT * FROM user WHERE sex = sexflag;

end;

“;

mysql_query($sql);//创建一个myproce4的存储过程

$sql = “set @sexflag = 1”;

mysql_query($sql);//设置性别参数为1

$sql = “call test.myproce4(@sexflag);”;

mysql_query($sql);//调用myproce4的存储过程,在cmd下面看效果

实例五:使用变量的存储过程

$sql = ”

create procedure myproce5(in a int,in b int)

begin

declare s int default 0;

set s=a+b;

select s;

end;

“;

mysql_query($sql);//创建一个myproce5的存储过程

$sql = “call test.myproce5(4,6);”;

mysql_query($sql);//调用myproce5的存储过程,在cmd下面看效果

实例六:case语法

$sql = ”

create procedure myproce6(in score int)

begin

case score

when 60 then select ‘及格’;

when 80 then select ‘及良好’;

when 100 then select ‘优秀’;

else select ‘未知分数’;

end case;

end;

“;

mysql_query($sql);//创建一个myproce6的存储过程

$sql = “call test.myproce6(100);”;

mysql_query($sql);//调用myproce6的存储过程,在cmd下面看效果

实例七:循环语句

$sql = ”

create procedure myproce7()

begin

declare i int default 0;

declare j int default 0;

while i<10 do

set j=j+i;

set i=i+1;

end while;

select j;

end;

“;

mysql_query($sql);//创建一个myproce7的存储过程

$sql = “call test.myproce7();”;

mysql_query($sql);//调用myproce7的存储过程,在cmd下面看效果

实例八:repeat语句

$sql = ”

create procedure myproce8()

begin

declare i int default 0;

declare j int default 0;

repeat

set j=j+i;

set i=i+1;

until j>=10

end repeat;

select j;

end;

“;

mysql_query($sql);//创建一个myproce8的存储过程

$sql = “call test.myproce8();”;

mysql_query($sql);//调用myproce8的存储过程,在cmd下面看效果

实例九:loop语句

$sql = ”

create procedure myproce9()

begin

declare i int default 0;

declare s int default 0;

loop_label:loop

set s=s+i;

set i=i+1;

if i>=5 then

leave loop_label;

end if;

end loop;

select s;

end;

“;

mysql_query($sql);//创建一个myproce9的存储过程

$sql = “call test.myproce9();”;

mysql_query($sql);//调用myproce9的存储过程,在cmd下面看效果

实例十:删除存储过程

mysql_query(“drop procedure if exists myproce”);//删除test的存储过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值