MySQL中是否存在等价于Oracle NULL语句的空操作占位语句
问题场景
编写代码时我个人习惯先搭建完成流程控制结构,再填充内部的具体业务逻辑。
- Oracle环境下,只需在空代码块中写入
null;命令即可满足语法解析器要求,让未完成的代码正常通过编译 - MySQL环境下,空代码块会触发语法错误,直接写入
null;语句也无法正常通过语法校验
示例代码如下:
if( _orgId IS NULL ) then select _orgId; else null; -- 此处会抛出错误 -- TODO: 后续编写复杂业务语句 end if;
问题
MySQL中是否存在等价于Oracle NULL命令的空操作语句,如果存在的话具体写法是什么?
解答
存在等价的空操作占位语句,最适配的写法是DO NULL;。DO是MySQL原生提供的语句,作用是执行后续表达式但不返回任何结果集,不会产生任何业务逻辑副作用,完全可以替代Oracle的null;作为占位符使用,替换后代码可正常通过编译:
if( _orgId IS NULL ) then select _orgId; else DO NULL; -- 无实际操作,仅做语法占位,不会触发语法错误 -- TODO: 后续编写复杂业务语句 end if;
除了DO NULL;之外,DO 1;等无实际逻辑的DO语句写法也可以实现同样的效果,不会对现有逻辑产生任何影响,适配先搭流程框架、后补业务逻辑的编码习惯。
内容的提问来源于stack exchange,提问作者m12lrpv
相关产品推荐
相关产品推荐

