花括号 { } 在 OceanBase 中是不是有其他作用?

使用的版本是 OB 4.2.1.8。在创建存储过程 的时候 ,正则表达式中加入花括号{ },存储过程 就无法正常 创建了。把 { } 删除,又可以正常创建存储过程 。就算是注释里面 有花括号 也不可以,请问这是什么问题?

3 个赞

ob是企业版还是社区版 使用的什么工具写的存储过程

使用官方的 ODC 来写存储过程 的。排查了好久,无法复现出问题,就是在将生产的存过 迁到 OB 就遇到这些问题。

SHOW VARIABLES like ‘version_comment’; 查一下版本号 看着像是支持正则表达式的问题

image

你好,你提的这个技术问题牵涉到OceanBase企业版范围内的功能细节;针对此类问题,建议你通过以下方式寻求帮助:

  1. 如你所在的企业客户已签署OceanBase企业版销售合同,请你联系客户经理;

  2. 如你所在的企业客户尚未签署OceanBase企业版销售合同,你可通过OceanBase官网商务咨询页面留下你的联系方式,OceanBase企业版的业务顾问会在一个工作日内与你联系。

另外,我们欢迎你使用社区版,并在论坛/社群中分享你对社区版本的想法、经验和问题,与其他社区成员共同交流。

加个转义字符呢

转不了的,加注释 也不行。只会检测到 {9},不管前面加什么符号。

在 OceanBase 中,{ } 的使用并非强制(部分场景可省略),但其核心作用是明确界定代码块的范围,尤其在包含多条语句时,能避免语法解析歧义,提高代码可读性。不同兼容模式下,{ } 的使用规范会对齐对应的原生数据库(MySQL 或 Oracle),语法细节可能略有差异,但核心作用一致。

坐等高手来.

我感觉 像是 { } 被当作是动态绑定参数 之类的,之前试过 把这一行代码注释 掉,还是会有问题,就是注释掉的代码,还是报错。所以我的想法有两个,
1、是不是客户端的功能,加上 { } 后,需要在客户端写上些什么,当作参数传入到 SQL?
2、是不是 OB 的编译器,把 { } 的 内容,当成了动态参数之类的?
第一个方法,之前在 Dbeaver 工具上是试过的,ODC 不会用,好像也没看到这方面的设置。第二个,自己复现不出来。自己写个简单的,短一点的,好像都没有问题,可以正常执行。就是生产上面的代码 迁过来会有问题。没想明白

正则表达式不是可以加大括号么

是可以加,加了大括号 就 运行报错。正则是没问题的,就是不知道 为什么 OB 会报错

回头我试一下,按说不应该,OB也应该符合这种标准呀,包括SQL标准啥的。