ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
       ecpg是用于C程序的PostgreSQL嵌入式SQL预处理器。它通过将 SQL 调用替换为特殊函数调用把带有嵌入式 SQL 语句的 C 程序转换为普通 C 代码。输出文件可以被任何 C 编译器工具链处理。`ecpg`将把命令行中给出的每一个输入文件转换为相应的 C 输出文件。 如果输入文件名没有任何扩展名,则假定为`.pgc`。文件扩展名将由`.c`替换以构造输出文件名。 但是输出文件名可以使用`-o`选项覆盖。如果输入文件名只是`-`,`ecpg`从标准输入 读取程序(并写入标准输出,除非用`-o`重写)。 **命令格式:** ecpg [OPTION]... FILE... > **Options::** > * **-c**:自动从 SQL 代码生成确定的 C 代码。当前,这对`EXEC SQL TYPE`起效 > * **-C MODE**:置一个兼容性模式。`mode`可以是`INFORMIX`,`INFORMIX_SE`或`ORACLE` > * **-D SYMBOL**:定义一个 C 预处理器符号。 > * **-h**:处理头文件。指定此选项后,输出文件扩展名变为`.h`而不是`.c`,默认输入文件扩展名为`.pgh`而不是`.pgc`。此外,将强制启用`-c`选项 > * **-i** :分析系统也包括文件 > * **-I DIRECTORY**:指定一个额外的包括路径,用来寻找通过`EXEC SQL INCLUDE`包括的文件。默认值是`.`(当前目录)、`/usr/local/include`、在编译时定义的PostgreSQL包括目录(默认:`/usr/local/pgsql/include`)以及`/usr/include` > * **-o OUTFILE**:指定`ecpg`应该将它的所有输出写到给定的文件。 写`-o-`将所有输出发送到标准输出 > * **-r OPTION** :选择运行时行为。`option`可以是下列之一: > * no_indicator:不使用指示器而使用特殊值来表示空值 > * prepare:在使用所有语句之前准备它们。libecpg 将保持一个预备语句的缓冲并当语句再被执行时重用该语句。如果缓冲满了,libecpg 将释放最少使用的语句 > * questionmarks:为兼容性原因允许使用问号作为占位符。在很久以前这被用作默认值。 > * **--regression**:在回归测试模式下运行 > * **-t**:打开事务的自动提交。在这种模式下,每一个 SQL 命令会被自动提交,除非它位于一个显式事务块中。在默认模式中,命令只有当`EXEC SQL COMMIT`被发出时才被提交 > * **-V, --version**:打印版本信息 > * **-?, --help**:显示关于ecpg命令行参数的帮助并退出。 ``` // 将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 ```