PostgreSQL ecpg

2021-09-13 15:38 更新

ecpg — 嵌入式 SQL C 預處理器

大綱

ecpg [option...] file...

描述

ecpg是用于 C 程序的嵌入式 SQL 預處理器。它通過將 SQL 調(diào)用替換為特殊函數(shù)調(diào)用把帶有嵌入式 SQL 語句的 C 程序轉(zhuǎn)換為普通 C 代碼。輸出文件可以被任何 C 編譯器工具鏈處理。

ecpg將把命令行中給出的每一個輸入文件轉(zhuǎn)換為相應的 C 輸出文件。 如果輸入文件名沒有任何擴展名,則假定為.pgc。文件擴展名將由 .c替換以構造輸出文件名。 但是輸出文件名可以使用-o選項覆蓋。

如果輸入文件名只是-,ecpg從標準輸入 讀取程序(并寫入標準輸出,除非用-o重寫)。

這個參考頁沒有描述嵌入式 SQL 語言。關于該主題請參考第 35 章。

選項

ecpg接受下列命令行參數(shù):

-c

自動從 SQL 代碼生成確定的 C 代碼。當前,這對EXEC SQL TYPE起效。

-C mode

設置一個兼容性模式。mode可以是INFORMIX,INFORMIX_SEORACLE

-D symbol

定義一個 C 預處理器符號。

-h

處理頭文件。指定此選項后,輸出文件擴展名變?yōu)?code class="literal">.h而不是 .c,默認輸入文件擴展名為.pgh 而不是.pgc。此外,將強制啟用-c選項。

-i

分析系統(tǒng)也包括文件。

-I directory

指定一個額外的包括路徑,用來尋找通過EXEC SQL INCLUDE包括的文件。默認值是.(當前目錄)、/usr/local/include、在編譯時定義的PostgreSQL包括目錄(默認:/usr/local/pgsql/include)以及 /usr/include。

-o filename

指定ecpg應該將它的所有輸出寫到給定的filename。 寫-o-將所有輸出發(fā)送到標準輸出。

-r option

選擇運行時行為。option可以是下列之一:

no_indicator

不使用指示器而使用特殊值來表示空值。歷史上曾有數(shù)據(jù)庫使用這種方法。

prepare

在使用所有語句之前準備它們。libecpg 將保持一個預備語句的緩沖并當語句再被執(zhí)行時重用該語句。如果緩沖滿了,libecpg 將釋放最少使用的語句。

questionmarks

為兼容性原因允許使用問號作為占位符。在很久以前這被用作默認值。

-t

打開事務的自動提交。在這種模式下,每一個 SQL 命令會被自動提交,除非它位于一個顯式事務塊中。在默認模式中,命令只有當EXEC SQL COMMIT被發(fā)出時才被提交。

-v

打印額外信息,包括版本和“包括”路徑。

--version

打印ecpg版本并退出。

-?
--help

顯示關于ecpg命令行參數(shù)的幫助并退出。

注解

在編譯預處理好的 C 代碼文件時,編譯器需要能夠找到PostgreSQL包括目錄中的ECPG頭文件。因此,在調(diào)用編譯器時,你可能必須使用-I選項(例如,-I/usr/local/pgsql/include)。

使用帶有嵌入式 SQL 的 C 代碼的程序必須被鏈接到libecpg庫,例如使用鏈接器選項-L/usr/local/pgsql/lib -lecpg。

適合于安裝的這些目錄的值可以使用pg_config找到。

例子

如果你有一個名為prog1.pgc的嵌入式 SQL C 源文件,你可以使用下列命令序列創(chuàng)建一個可執(zhí)行程序:

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


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號