PostgreSQL 處理嵌入式 SQL 程序

2021-09-02 14:36 更新

現(xiàn)在你已經(jīng)對如何構(gòu)造嵌入式 SQL C 程序有所了解了,你可能希望知道如何編譯它們。在編譯之前,你需要讓該文件通過嵌入式SQL C預(yù)處理器,它會把你用到的SQL轉(zhuǎn)換成特殊的函數(shù)調(diào)用。在編譯之后,你必須鏈接一個包含所需函數(shù)的特殊庫。這些函數(shù)從參數(shù)中取得信息、使用libpq執(zhí)行 SQL命令并且把結(jié)果放在指定的參數(shù)中用來輸出。

該預(yù)處理器程序被稱作ecpg并且被包括在一個正常的PostgreSQL安裝中。嵌入式 SQL 程序通常帶有擴(kuò)展名.pgc。如果你有一個程序文件prog1.pgc,你可以調(diào)用下面的命令對它進(jìn)行預(yù)處理:

ecpg prog1.pgc

這將創(chuàng)建一個文件prog1.c。如果你的輸入文件不遵循建議的命名模式,你可以用-o選項顯式地指定輸出文件。

預(yù)處理過的文件可以被正常地編譯,例如:

cc -c prog1.c

產(chǎn)生的 C 源文件從PostgreSQL安裝中包括頭文件,因此如果你把PostgreSQL安裝在一個不被默認(rèn)搜索的位置,你必須在編譯命令行中增加一個選項(例如-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來管理一個大工程的構(gòu)建過程,把下面的隱式規(guī)則包括在你的 makefile 中將會很方便:

ECPG = ecpg

%.c: %.pgc
        $(ECPG) $<

ecpg命令的完整語法可見ecpg。

ecpg庫默認(rèn)是線程安全的。不過,你可能需要使用一些線程命令行選項來編譯你的客戶端代碼。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號