VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

预处理程序

功能描述

把嵌有 SQL 语句的 C 程序通过将 SQL 调用替换成特殊的函数调用的方法转换成普通的 C 代码。 然后输出的文件就可以用任何 C 编译工具进行处理。

接口原型

ecpg [option...] file...

参数说明

参数名 参数说明
option ecpg接受下面命令行参数:
-c 为 SQL 代码自动生成某种 C 代码。目前,这个选项可以用于EXEC SQL TYPE。
-C mode 设置一个兼容模式。mode可以是INFORMIX 或INFORMIX_SE之一。
-D symbol 定义一个 C 预处理器符号。
-i 同时也分析系统包含文件。
-I directory 声明一个附加的包含路径。用于寻找通过EXEC SQL INCLUDE包含的文件。 缺省是:.(当前目录)、/usr/local/include、 在编译时定义的PostgreSQL包含路径(缺省为: /usr/local/pgsql/include)、/usr/include。顺序同上。
-o filename 指定ecpg应该把它的所有输出写到给出的filename里。
-r option 选择一个运行时行为。Option可以是下列的: no_indicator 不使用指示器,但是使用特殊的值来表示空值。历史上有过数据库使用这种方法。 prepare 使用它们之前预备所有语句。Libecpg将保存一个预备语句的缓冲,并且如果再次执行就重复使用一个语句。 如果缓存运行满了,Libecpg将释放最近使用的语句。 questionmarks 允许问号标识为了兼容原因作为占位符。很久以前这是缺省。
-t 打开自动提交模式。在这种模式下,每个查询都自动提交,除非它是包围在一个明确的事务块中。 在缺省模式下,命令只是在发出EXEC SQL COMMIT的时候提交。

返回值

其他

  • 在编译预处理的 C 代码文件的时候,编译器需要能够找到PostgreSQL 包含目录里面的ECPG头文件。因此,在调用编译器的时候可能需要使用 -I选项(比如-I/usr/local/pgsql/include)。

  • 使用了嵌入 SQL 的 C 代码必须和libecpg库链接,比如, 使用这样的链接选项:-L/usr/local/pgsql/lib -lecpg。

  • 这些目录的实际值可以通过pg_config找到。

  • 举例说明使用接口:

    ecpg prog1.pgc
    cc -I/usr/local/pgsql/include -c prog1.c
    cc -o prog1 prog1.o -L/usr/local/pgsql/lib -lecpg