更新时间:2024-05-07 GMT+08:00
ecpg与Pro*C兼容性对比
ecpg是GaussDB提供的一种用于C语言程序的嵌入式SQL预处理器,与ORA数据库Pro*C预处理器在编译执行命令、语法、嵌入式语句等行为和语义上存在差异。
ecpg与Pro*C的相关使用差异对比:
- 目前ecpg不支持EXEC SQL CONTEXT ALLOCATE、EXEC SQL CONTEXT USE、EXEC SQL CONTEXT FREE。
ecpg当前不支持CONTEXT申请、使用、释放操作,ecpg有独立的内存管理机制。多线程模式下,ecpg在每个线程中独立地建立连接、执行SQL语句以及相关资源的释放。这一使用方式与Pro*C多线程程模式下每个线程各自进行CONTEXT相关申请与释放的处理逻辑一致。
- 目前ecpg不支持EXEC SQL COMMIT WORK RELEASE。
在ecpg中,当业务语句执行COMMIT之后,并没有RELEASE选项,需要通过调用EXEC SQL DISCONNECT、EXEC SQL CLOSE等命令来实现相关资源的释放。Pro*C中EXEC SQL COMMIT带有RELEASE选项。用于释放程序持有的所有连接、游标等资源信息。
- 目前ecpg不支持EXEC SQL ENABLE THREAD。
ecpg编译选项中开启宏定义,在main函数的.pgc文件中定义(define)ENABLE_THREAD_SAFETY。
父主题: 基于ecpg开发