begin-end语句块在mysql中的使用问题

本文探讨了在MySQL中使用begin-end语句块的限制及适用场景,指出其不能直接在客户端工具中使用,而适用于存储过程、触发器等定义内部。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在最近在通过navicate连接mysql数据库时,进行查询操作:

delimiter $$
BEGIN

SET @a=1;

if (@a > 0) THEN
SELECT COUNT(*) from tb_public_effect_tmp;
ELSE
SELECT * from tb_effect_master;
end if;

END $$

delimiter ;

直接报错[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET @a =1

开始以为变量定义或者是if else语句出错,最后确定变量定义和if else语句都是没有错的。

后来发现以上语句在触发器或者存储过程中是可以正确执行的。

查看相关文档和网上资料中得知:

通常begin-end用于定义一组语句块,在各大数据库中的客户端工具中可直接调用,但在mysql中不可用。

begin-end、流程控制语句、局部变量只能用于函数、存储过程内部、游标、触发器的定义内部。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值