ecpg — 嵌入式 SQL C 預處理器
ecpg
[選項
...] 檔案
...
ecpg
是 C 程式的嵌入式 SQL 預處理器。 它將帶有嵌入式 SQL 陳述式的 C 程式轉換為普通的 C 程式碼,方法是將 SQL 調用替換為特殊的函數調用。 然後,可以使用任何 C 編譯器工具鏈處理輸出檔案。
ecpg
會將命令列上給定的每個輸入檔案轉換為相應的 C 輸出檔案。 如果輸入檔名沒有任何擴展名,則假定為 .pgc
。 檔案的擴展名將被 .c
替換以建構輸出檔名。 但是可以使用 -o
選項覆蓋輸出檔名。
如果輸入檔名僅為 -
,則 ecpg
從標準輸入讀取程式 (並寫入標準輸出,除非使用 -o
覆蓋)。
本參考頁面不描述嵌入式 SQL 語言。 有關該主題的更多資訊,請參閱第 34 章。
ecpg
接受以下命令列引數
-c
自動從 SQL 程式碼產生某些 C 程式碼。 目前,這適用於 EXEC SQL TYPE
。
-C 模式
設定相容性模式。 模式
可以是 INFORMIX
、INFORMIX_SE
或 ORACLE
。
-D 符號
[=值
]
定義一個預處理器符號,相當於 EXEC SQL DEFINE
指令。 如果未指定 值
,則使用值 1
定義該符號。
-h
處理標頭檔。 指定此選項時,輸出檔案擴展名變為 .h
而不是 .c
,並且預設輸入檔案擴展名為 .pgh
而不是 .pgc
。 此外,-c
選項會強制開啟。
-i
也解析系統包含檔案。
-I 目錄
指定一個額外的包含路徑,用於尋找透過 EXEC SQL INCLUDE
包含的檔案。 預設值是 .
(目前目錄)、/usr/local/include
、PostgreSQL 包含目錄(在編譯時定義;預設值:/usr/local/pgsql/include
)和 /usr/include
,依此順序。
-o 檔案名稱
指定 ecpg
應將其所有輸出寫入給定的 檔案名稱
。 寫入 -o -
以將所有輸出發送到標準輸出。
-r 選項
選擇執行時行為。 選項
可以是以下之一
no_indicator
不使用指示器,而是使用特殊值來表示空值。 歷史上有些資料庫使用這種方法。
prepare
在使用所有陳述式之前先準備它們。 Libecpg 將保留準備好的陳述式快取,如果再次執行陳述式,則重複使用它。 如果快取已滿,libecpg 將釋放最少使用的陳述式。
questionmarks
由於相容性原因,允許問號作為佔位符。 這曾經是很久以前的預設值。
-t
開啟交易的自動提交。 在此模式下,除非它位於顯式交易區塊中,否則每個 SQL 命令都會自動提交。 在預設模式下,只有在發出 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
如果您在文件中看到任何不正確、與您對特定功能的體驗不符或需要進一步澄清的內容,請使用此表單報告文件問題。