PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 章 33. ECPG - 在C中嵌入SQL | 下一页

# 33.10. 处理嵌入的SQL程序

现在你已知道如何形成嵌入SQL C程序，你可能想要知道如何编译它们。 编译之前你通过嵌入的SQL C预处理器运行文件，这将转换你用于特定函数调用的 SQL 语句。编译完之后，你必须连接包含所需函数的特殊库。这些函数 从参数中抓取信息，使用libpq接口执行SQL 命令，将结果放在输出指定的参数中。

预处理程序被称为`ecpg`，包含在正常PostgreSQL安装中。 嵌入的SQL程序通常以扩展名`.pgc`命名。 如果你有`prog1.pgc`程序文件，你可以通过简单调用处理它。

    ecpg prog1.pgc

这将创建名为`prog1.c`的文件。如果你的输入文件 不遵循建议的命名模式，你可以使用`-o`选项明确的指定输出文件。

预处理文件可以正常编译，比如：

    cc -c prog1.c

生成的C源文件包含来自PostgreSQL安装的头文件，因此 如果你在缺省不被搜索的地方安装PostgreSQL，那么 你必须添加选项比如`-I/usr/local/pgsql/include`到 编译命令行。

为了连接嵌入式SQL程序，你需要包含`libecpg`库，像这样：

    cc -o myprog prog1.o prog2.o ... -lecpg

再次，你可能需要添加像`-L/usr/local/pgsql/lib` 到该命令行的选项。

你可以使用`pg_config` 或者`pkg-config`以及包名`libecpg`以 获得安装目录。

如果你使用make管理大对象编译过程， 它可能方便地包含下面你的makefiles中的隐式规则：

    ECPG = ecpg

    %.c: %.pgc
            $(ECPG) $<

`ecpg`命令完整语法在ecpg中有详细描述。

ecpg库缺省是线程安全的。然而，你可能需要 使用一些线程命令行选项来编译你的客户端代码。

上一页 | 起始页 | 下一页
预处理器指令 | 上一级 | 库函数