ecpg — C 語言嵌入式 SQL 預處理器
ecpg
[選項
...] 檔案
...
ecpg
是 C 語言程式的嵌入式 SQL 預處理器。它透過將 SQL 呼叫替換為特殊的函式呼叫,將帶有嵌入式 SQL 語句的 C 程式轉換為標準的 C 程式碼。然後,這些輸出檔案可以由任何 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
不使用指示符,而是使用特殊值來表示 NULL 值。歷史上,有些資料庫採用過這種方法。
prepare
在使用所有語句之前預先準備它們。Libecpg 將維護一個預備語句快取,並在再次執行語句時重用它。如果快取已滿,libecpg 將釋放使用最少的語句。
questionmarks
出於相容性考慮,允許使用問號作為佔位符。這曾經是很久以前的預設設定。
-t
啟用事務自動提交。在此模式下,除非顯式事務塊,否則每個 SQL 命令都會自動提交。在預設模式下,命令僅在發出 EXEC SQL COMMIT
時提交。
-v
列印附加資訊,包括版本和“include”路徑。
--version
列印 ecpg 版本並退出。
-?
--help
顯示關於 ecpg 命令列引數的幫助資訊,然後退出。
編譯預處理後的 C 程式碼檔案時,編譯器需要能夠找到 ECPG 標頭檔案在 PostgreSQL 包含目錄中。因此,呼叫編譯器時可能需要使用 -I
選項(例如,-I/usr/local/pgsql/include
)。
使用帶有嵌入式 SQL 的 C 程式碼的程式必須連結 libecpg
庫,例如使用連結器選項 -L/usr/local/pgsql/lib -lecpg
。
安裝適用的上述任一目錄的值可以透過 pg_config 獲取。
如果您的嵌入式 SQL C 原始檔名為 prog1.pgc
,您可以使用以下命令序列來建立可執行程式:
ecpg prog1.pgc cc -I/usr/local/pgsql/include -c prog1.c cc -o prog1 prog1.o -L/usr/local/pgsql/lib -lecpg
如果您在文件中發現任何不正確、與您對特定功能的使用經驗不符或需要進一步澄清的內容,請使用此表單來報告文件問題。