mysql存儲過程,mysql存储过程

在数据库查询时,如果有较复杂的计算过程,需要通过上一次的查询结果来查询,这个时候就比较难实现且繁琐,存储过程就很好的解决了这一问题,存储过程的主要思想就是,数据库SQL语言层面的代码封装与重用,可以将上一步的结果设为变量用于后续步骤的查询。

一个存储过程相当于一个功能。

声明语句结束符,可以自定义,默认是‘;’,但容易将sql语句定为结束,因此要先修改结束符,结束之后再恢复:

DELIMITER // #可以是任意,&&或者别的

DELIMITER ; #末尾恢复

创建存储过程

CREATE PROCEDURE NAME(

in param int, #in是定义传入的参数

out param2 varchar(25) #out是定义输出的参数

)

begin

sql语句,每个嵌套块及其中的每条语句,必须以分号结束

end

在begin...end复合语句中声明变量,在使用时加上@,但是只能这个存储过程使用

declare name varchar;

set @name = 'tom'; #赋值

select id into @name; #将查询的id赋值给变量name

select @name; #在终端打印输出结果

实例:

DELIMITER //

CREATE PROCEDURE costall(

in _companyId VARCHAR(10),

OUT costMoney1 FLOAT(10)

)

BEGIN

DECLARE cost1 FLOAT;

DECLARE cost2 FLOAT;

select num into @cost1 from ** where companyId = _companyId;

select price into @cost2 from ** where companyId = _companyId and id = 2;

SELECT @cost1 + @cost2 INTO costMoney1;

SELECT costMoney1;

END//

DELIMITER ;

存储过程的调用

在创建时有几个参数,此处需要几个参数,包含out的参数。在一个存储过程中也可以用该方法调用另一个存储过程。

call costall(1,@costMoney1 )

存储过程的修改以及删除

#修改,查到的都是用alter,但是我貌似没法实现,例如我改了参数或者sql语句使用alter没法成功变更,还待研究

alter PROCEDURE costall;

#删除

drop PROCEDURE costall;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值