首批通过分布式安全可靠测评,为关键业务系统打造
什么是 ECOB
更新时间:2026-05-25 19:23:32
ECOB 是与 Oracle Pro*C 兼容的 OceanBase 预编译器,提供了与 Pro*C 兼容的功能特性。
Pro*C 是 Oracle 数据库生态提供的一种开发应用的工具。当使用 C 语言编写应用程序时,可以在程序源代码中直接嵌入 SQL 语句,这些嵌入式 SQL 语句可以使用宿主 C 程序中的 C 语言变量作为输入输出。然后,Pro*C 预编译程序 proc 将对源代码进行预处理以进行完整的语法分析,并把嵌入式 SQL 语句和指令转换为对运行时库 sqllib 的函数调用。最后,输出一个 C 语言程序源代码文件。这个文件再通过 C 语言编译器进行编译链接后即可生成可执行程序。所以 OceanBase 数据库为了提供对 Pro*C 的支持,开发了类似的包含预编译程序 ecob 和运行时库 ecoblib 的预编译器 ECOB。
一个 proc 项目由大量 .pc 源文件组成,并通过 Makefile 等方式构建,为了让您的迁移代价最小化,我们的预编译程序 ecob 还提供了和 proc 程序相同的命令行选项和功能。
功能特性
下述为 ECOB 当前版本的主要功能特性:
与 OceanBase Oracle 模式完全兼容的 SQL 语法支持。
支持基本嵌入式 SQL 语句,如:
COMMIT、CONNECT、DELETE、EXECUTE、EXECUTE IMMEDIATE、INSERT、SELECT、UPDATE、WHENEVER、CALL、PREPARE和ROLLBACK等语句。支持游标(Cursor)相关的
DECLARE、OPEN、CLOSE和FETCH(包括NEXT、ABSOLUTE、WITH HOLD、CURRENT OF)等语句。支持 ANSI 标准的动态 SQL 所需要的
DESCRIPTOR和与之相关的ALLOCATE、DEALLOCATE、GET、SET、DESCRIBE和FETCH等语句。宿主变量无需在
BEGIN DECLARE SECTION和END DECLARE SECTION内声明即可直接使用。支持对 C 预处理器宏 #ifdef、#ifndef、#else、#endif 和 #define 的识别和处理。
ecoblib 库支持全部上述语句的运行时行为,不仅提供了 proc 程序兼容行为(如 CHAR_MAP)还支持程序在 Tuxedo 环境下的运行。
ecob 程序识别全部 proc 程序选项和兼容语义(如 PARSE=FULL),可无缝替换 proc 程序使用。
产品架构
ECOB 由预编译器程序 ecob 和运行时动态链接库 ecoblib(libecob.so)组成。其产品架构如下图所示:
