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
如果您在文件中發現任何不正確、與您對特定功能的使用經驗不符或需要進一步澄清的內容,請使用此表單來報告文件問題。