既然您已經瞭解瞭如何構建嵌入式 SQL C 程式,您可能想知道如何編譯它們。在編譯之前,您需要使用嵌入式SQL C預處理器處理該檔案,它會將您使用的SQL語句轉換為特殊的函式呼叫。編譯後,您必須連結一個包含所需函式的特殊庫。這些函式從引數中獲取資訊,使用 libpq 介面執行SQL命令,並將結果放入為輸出指定的引數中。
預處理器程式名為 ecpg
,它包含在標準的 PostgreSQL 安裝中。嵌入式 SQL 程式通常以 .pgc
副檔名命名。如果您有一個名為 prog1.pgc
的程式檔案,您可以透過簡單地呼叫以下命令來預處理它:
ecpg prog1.pgc
這將建立一個名為 prog1.c
的檔案。如果您的輸入檔案不遵循建議的命名模式,您可以使用 -o
選項顯式指定輸出檔案。
預處理後的檔案可以正常編譯,例如:
cc -c prog1.c
生成的 C 原始檔包含來自 PostgreSQL 安裝的標頭檔案,因此如果您將 PostgreSQL 安裝在預設未搜尋到的位置,您需要在編譯命令列中新增一個選項,例如 -I/usr/local/pgsql/include
。
要連結嵌入式 SQL 程式,您需要包含 libecpg
庫,如下所示:
cc -o myprog prog1.o prog2.o ... -lecpg
同樣,您可能需要在此命令中新增一個選項,例如 -L/usr/local/pgsql/lib
。
您可以使用 pg_config
或 pkg-config
,包名為 libecpg
,來獲取您安裝的路徑。
如果您使用 make 管理一個大型專案的構建過程,將以下隱含規則包含到您的 makefile 中可能會很方便:
ECPG = ecpg %.c: %.pgc $(ECPG) $<
ecpg
命令的完整語法在 ecpg 中進行了詳細介紹。
ecpg 庫預設是執行緒安全的。但是,您可能需要使用一些執行緒命令列選項來編譯您的客戶端程式碼。
如果您在文件中發現任何不正確之處、與您在使用特定功能時的經驗不符之處,或者需要進一步的澄清,請使用 此表格 報告文件問題。