更新时间: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。