---
title: OceanBase 数据库 MySQL mode PL 中 &quot;--&quot; 注释内容为空时非预期忽略下一个非空行内容-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于OceanBase 数据库 MySQL mode PL 中 &quot;--&quot; 注释内容为空时非预期忽略下一个非空行内容相关的常见问题和使用技巧，帮助您快速解决OceanBase 数据库 MySQL mode PL 中 &quot;--&quot; 注释内容为空时非预期忽略下一个非空行内容的难题。
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# OceanBase 数据库 MySQL mode PL 中 "--" 注释内容为空时非预期忽略下一个非空行内容

更新时间：2026-05-29 08:46

适用版本： V2.2.x、V3.1.x、V3.2.x、V4.1.x、V4.2.x、V4.3.x 内容类型：Troubleshoot  

## 问题现象

OceanBase 数据库 MySQL 租户下，PL 语句中 `--` 开头的注释内容为空时，会将下一个非空行中的内容识别成单行注释的一部分。

示例。

```shell
CREATE PROCEDURE `prepareTest2`()
begin

   -- 注释 0
   select 1;

--
   -- 注释 1
   --
   select 2;
--
   --
       select 3;

   --
--
   --
       select 4;
   --
   select 5;

   --
   --
   select 6;
   select 7;--

   select 8;

   --

   select 9;

   --

   select 10;
   select 'end-end';

   select 'end';
end

```

最后的输出将会是 1 3 6 7。

## 关键诊断信息

### 触发条件

OceanBase 数据库 MySQL 租户下，PL 语句中 `--` 开头的注释内容。

### 事前巡检

避免出现无意义的 `--` 开头的空内容注释。

### 事后诊断

查看 PL 源码中是否有 `--` 开头的空注释。

## 问题原因

当前 OceanBase 数据库的 PL 语言前端 scanner 和 parser 使用 flex/bison 框架构建，其中 flex 识别 comment 的规则。

```shell
space        [ \t\n\r\f]
comment      ("--"{space}+{non_newline}*)|(#{non_newline}*)

```

可见在识别 `--` 单行注释的时候要求其后跟随至少一个空字符。当 `--` 之后没有内容时（全部是 `space` 能够匹配的空字符），会导致 `{space}+` 匹配到其后尾随的所有空字符（包含换行符），进而导致 `{non_newline}*` 匹配到下一个非空行。最后 `--` 之后的第一个非空行就被识别成了单行注释的一部分。

## 问题的风险及影响

正确性风险，因为 `--` 忽略掉的语句不能确定，所以可能会忽略一部分语句内容导致语法报错，也可能会忽略完整的语句导致潜在的正确性问题。

## 影响租户

影响 OceanBase 数据库中的 SYS 租户和 MySQL 租户，对于 Oracle 租户无影响。

## 影响版本

OceanBase 数据库企业版 V2.2.77 GA（oceanbase-2.2.77-20210508211731）及之后版本、V3.1.2 GA（oceanbase-3.1.2-20210618150922）及之后版本、V3.2.2 GA（oceanbase-3.2.2-20211130225726）及之后版本、V3.2.3 GA（oceanbase-3.2.3.0-20220419）及之后版本、V3.2.4 GA（oceanbase-3.2.4.0-100000072022102819）及之后版本、V4.1.0 GA（oceanbase-4.1.0.0-100001122023040322）及之后版本、V4.2.0 GA（oceanbase-4.2.0.0-100010082023083014）及之后版本、V4.2.0 GA（oceanbase-4.2.0.0-100000032023071023）及之后版本、V4.2.1 GA（oceanbase-4.2.1.0-100000182023092722）及之后版本、V4.2.2 GA（oceanbase-4.2.2.0-100000082024011317）及之后版本、V4.2.5 GA（oceanbase-4.2.5.0-100000082024102022）及之后版本、V4.3.0（oceanbase-4.3.0.0-100000072024020200）及之后版本。

## 解决方法

- 升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库企业版 V4.2.1 BP10 Hotfix3（oceanbase-4.2.1.10-110030032024121120）、V4.2.1 BP10 Hotfix4（oceanbase-4.2.1.10-110040012024122218）、V4.2.1 BP10 Hotfix5（oceanbase-4.2.1.10-110050012025011614）、V4.2.1 BP10 Hotfix6（oceanbase-4.2.1.10-110060022025022409）、V4.2.1 BP11（oceanbase-4.2.1.11-111000052025032520）、V4.2.5 BP1（oceanbase-4.2.5.1-101000182024120722）。
 - 删除 `--` 开头的空内容注释。

## 规避方式

避免出现无意义的 `--` 开头的空内容注释。

Previous

[OceanBase 数据库 V4.x 版本中执行 PL 时在操作 UTL_FILE 过程中出现 -4200，hash map/set entry exist 异常](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002393087)

Next

[PL 嵌套调用 refcursor 报错 5930](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000422799) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
