mysql定义过程_定义MySql存储过程

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

DELIMITER $$

Drop  Procedure  If  Exists proc_name;  $$

Create  Procedureproc_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;

callproc_name(@n1, @n2);

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

DELIMITER  $$

DROPPROCEDURE  IF  EXISTS  proc_name_out; $$

CREATEPROCEDURE  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   PROCEDUREproc_trans(

in  p1   varchar(20) ,

in  p2   varchar(50)

)

BEGIN

declareerr  int  default0;

declarecontinue  handler  forsqlexceptionseterr= 1;   -- 如果出现sql异常,则将err设置为1后继续执行后面的操作

SetAutoCommit= 0;   -- 开启事务

-- 批量插入数据 --

insert   into  sy_queryconfig(syq_id)   values(p1);

insert   into  sy_queryconfig(syq_id)   values(p2);

iferr=1 then

ROLLBACK;

else

COMMIT;

end if;

END$$

DELIMITER;

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

DELIMITER  $$

DROP   PROCEDURE IF   EXISTS proc_trans;$$

CREATE   PROCEDUREproc_trans (

in p1 VARCHAR(20),

in p2 VARCHAR(50)

)

BEGINdeclareexit  handler forsqlexception-- 只要发生异常就回滚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、付费专栏及课程。

余额充值