关于mysql创建函数时遇到语法报错(delimiter的使用)

报错的原因是因为在过程或者函数中存在分隔符 分号(;),而mysql中默认分隔符也是 ;

这就导致创建函数时分开了。这个时候就要使用delimiter来解决这个问题。

delimiter介绍:delimiter是mysql分隔符,在mysql客户端中分隔符默认是分号(;)。如果一次输入的语句较多,并且语句中间有分号,这时需要新指定一个特殊的分隔符。

在创建函数时定义参数时会以;结尾,这个时候mysql解释器就觉得你已经结束了语句,就会对你;以上的部分进行解析,但是下面的部分(以;结束)会分为另外一个部分,这个时候就会造成语法错误,所以这个时候我们就是把mysql中的分隔符变成其他的符号例如 '$$' 。

这个时候mysql的解释器就会以 '$$' 之前的语句作为一个整体进行解析。

-- 将分隔符变为$$
-- 如果不使用DELIMITER 那么在 default 0 ; 此处的;前面的部分会被当成一个整体进行解析从而造成语法错误
DELIMITER $$ 
create function memo3(ida int) returns int 
begin

declare num int default 0;
select count(*) into num from bms_bills_memo
where id = ida;

return num;

end
$$
-- 将$$以上的语句变为一个整体进行解析
-- 将分隔符改回;
DELIMITER ;

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值