定义MySql存储过程


## 创建一个不带返回值的存储过程 ##

DELIMITER $$

Drop  Procedure  If  Exists  proc_name;  $$
Create  Procedure  proc_name(

        in  num1  int,

        in  num2  int

)
BEGIN 
    set  @a = 2000000001; 
    set  @d = 20000001; 
    set  @e = 18200000000;  


     WHILE  @a<2000010001  Do
            set @b=rand_string(5);  
            set @c=rand_sex(1); 


            insert  into  students  values(@a, @b, @c, @d, @e);
            

            if  @a%100=0   then
                 set @d=@d+1 ;
            end if; 
    End  WHILE ; 
END 
 $$
DELIMITER ;   //注意:delimiter 分号前必须有空格,否则报错

执行存储过程:  

Set  @n1= 1;

Set  @n2=10;

call  proc_name(@n1, @n2);




## 创建带有返回值的存储过程 ##

DELIMITER  $$

DROP   PROCEDURE  IF  EXISTS  proc_name_out;  $$

CREATE  PROCEDURE  proc_name_out (

        out n int

)

BEGIN

        SELECT   COUNT(*)   INTO  n  FROM   employee ;

END  $$

DELIMITER ;  
--  MYSQL调用存储过程
执行存储过程:CALL  proc_employee_getCount(@n) ; 




## 创建事务 ## 

DELIMITER  $$

DROP   PROCEDURE   IF   EXISTS   proc_trans;  $$

CREATE   PROCEDURE   proc_trans(

        in  p1   varchar(20) ,

        in  p2   varchar(50)

)

BEGIN
      declare  err  int  default 0;   
      declare  continue  handler  for  sqlexception set   err = 1;   -- 如果出现sql异常,则将err设置为1后继续执行后面的操作  

      Set  AutoCommit = 0;   -- 开启事务


     -- 批量插入数据 -- 

      insert   into  sy_queryconfig(syq_id)   values(p1);
      insert   into  sy_queryconfig(syq_id)   values(p2);

      if  err=1  then
              ROLLBACK;
      else
              COMMIT;
      end if
END 
$$

DELIMITER ; 



## 创建事务,有任何异常即回滚 ## 

DELIMITER  $$

DROP   PROCEDURE   IF   EXISTS   proc_trans $$

CREATE   PROCEDURE    proc_trans (

      in p1 VARCHAR(20),

      in p2 VARCHAR(50)

)
BEGIN
      declare  exit  handler  for  sqlexception   -- 只要发生异常就回滚  
      begin
          Rollback
      end ; 

      -- 返回异常处理结果等其它操作 --
      Start  TransAction ;  

            insert into sy_queryconfig(syq_id) values(p1); 


            insert into sy_queryconfig(syq_id) values(p2); 

       Commit ;
END 
$$

DELIMITER  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值