支援的版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1

ecpg

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 模式

設定相容性模式。 模式可以是 INFORMIXINFORMIX_SEORACLE

-D 符號[=]

定義一個預處理器符號,相當於 EXEC SQL DEFINE 指令。 如果未指定 ,則使用值 1 定義該符號。

-h

處理標頭檔。 指定此選項時,輸出檔案擴展名變為 .h 而不是 .c,並且預設輸入檔案擴展名為 .pgh 而不是 .pgc。 此外,-c 選項會強制開啟。

-i

也解析系統包含檔案。

-I 目錄

指定一個額外的包含路徑,用於尋找透過 EXEC SQL INCLUDE 包含的檔案。 預設值是 . (目前目錄)、/usr/local/includePostgreSQL 包含目錄(在編譯時定義;預設值:/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

提交更正

如果您在文件中看到任何不正確、與您對特定功能的體驗不符或需要進一步澄清的內容,請使用此表單報告文件問題。