PostgreSQL 9.4.4 中文手册
上一页 | 上一级 |  | 下一页

# ecpg

## 名称

ecpg -- 嵌入的 SQL C 预处理器

## 大纲

`ecpg` [`option`...] `file`...

## 描述

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

`ecpg`将把命令行上给出的每个输入文件转换成对应的 C 输出文件。 输入文件最好有`.pgc`扩展名，这样，这个扩展将被替换成 `.c`来决定输出文件名。如果输入文件的扩展不是`.pgc`， 那么输出文件名将通过在全文件名后面附加`.c`来生成。 输出文件名也可以用`-o`选项覆盖。

本手册页并不描述嵌入的 SQL 语句，参阅第 33 章获更多信息。

## 选项

`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`的时候提交。

`-v`

  打印额外的信息，包括版本和"include"路径。

`--version`

  打印ecpg版本然后退出。

`-?`
`--help`

  显示关于ecpg命令行参数的帮助，然后退出。

## 注意

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

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

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

## 例子

如果你有一个叫`prog1.pgc`的嵌入 SQL 的 C 源代码， 你可以用下面的命令序列创建一个可执行程序：

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

上一页 | 起始页 | 下一页
dropuser | 上一级 | pg_basebackup