Mysql使用存储过程

1、什么是存储过程?
存储过程简单来说,就是为以后的使用而保存的一条或多条SQL语句的集合。可将其视为批文件,虽然它们的作用
不仅限于批处理。
2、创建存储过程
第一个存储过程

delimiter //
create procedure  test_name()
begin
select count(*) from table_name;
end
//

call test_name();//调用存储过程

解释:delimiter // 将语句的结束符号从分号;临时改为两个//(可以是自定义)
create procedure 关键字,用来创建一个存储过程。
begin 关键字,存储过程开始关键字
end 关键字,存储过程结束关键字

注意:
1、此存储过程没有参数,但后跟的()仍然需要。
2、如果不自定义结束符号//,语句会报错。因为默认语句为分号;当运行到table_name;代码会截断。

第二个存储过程

delimiter //  #将语句的结束符号从分号;临时改为两个//
 create procedure delete_matches(in p_playerno interger)
 begin
 delete from table_name where playerno=p_playerno;
 end //
 delimiter;#将语句的结束符号恢复为分号
 
  call delete_matches(57);//调用存储过程
 传入一个字面量参数,指定要删除的球员
 

参数的指定形式为:
[in|out|inout] <参数名> <参数类型> [,[in|out|inout] <参数名> <参数类型>]
IN 输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)
OUT 输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)
INOUT 输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)

第三个存储过程(in 输入参数)

mysql> delimiter $$
mysql> create procedure in_param(in p_in int)
    -> begin
    ->   select p_in;//1
    ->   set p_in=2;//2
    ->    select P_in;//1
    -> end$$
mysql> delimiter ;
 
mysql> set @p_in=1;
 
mysql> call in_param(@p_in);
@p_in 为传入的一个变量

第四个存储过程(out输出参数)

mysql> delimiter //
mysql> create procedure out_param(out p_out int)
    ->   begin
    ->     select p_out;#NULL 因为out是向调用者输出参数,不接收输入的参数,所以存储过程里的p_out为null
    ->     set p_out=2;#2
    ->     select p_out;#2
    ->   end
    -> //
mysql> delimiter ;
 
mysql> set @p_out=1;
 
mysql> call out_param(@p_out);

第五个存储过程(inout输入输出参数)

mysql> delimiter $$
mysql> create procedure inout_param(inout p_inout int)
    ->   begin
    ->     select p_inout;#1
    ->     set p_inout=2;#2
    ->     select p_inout;#2调用了inout_param存储过程,接受了输入的参数,也输出参数,改变了变量
    ->   end
    -> $$
mysql> delimiter ;
 
mysql> set @p_inout=1;
 
mysql> call inout_param(@p_inout);

总结:
确保参数的名字不等于列的名字,否则在过程体中,参数名被当做列名来处理。
建议:
输入值使用in参数。
返回值使用out参数。
inout参数就尽量的少用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值