Mysql中的delimiter

在一个秋雨绵绵的下午,我在不怎么愉快的调试一个数据迁移工具。需要在mysql里面进行一项创建function的简单操作。于是,复制粘贴到客户端,回车。

稀松平常的操作给我来了一个error。

ERROR 1064 (42000): You hava an error in your SQL  syntax;check the manual that corresponds to your Mysql server version for the right syntax  to use near *** at line 1

哦,好好的几行function遇到了截断。

那就应该是没有结束被错误结束了。在mysql客户端中分隔符默认是分号(;)。其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。 如果一次输入的语句较多,并且语句中间有分号,这时需要新指定一个特殊的分隔符。而存储过程、函数的默认用分号结尾,则仅会执行最后一个分号。就触碰了这个禁忌。

百度一下,Mysql 分隔符。delimiter 的用法就出来了。

delimiter //

create function mysql_func2(x smallint unsigned, y smallint unsigned) returns smallint deterministic

BEGIN

DECLARE a, b SMALLINT UNSIGNED DEFAULT 10;

SET a = x, b = y;

RETURN a+b;

END; //

酱就可以了。

PS: 设置完成后,分隔符就被设置为//了,所以 用完后再设置回来 ; ,否则你执行普通的查询、插入语句又会没有结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值