?
本文檔使用 PHP中文網(wǎng)手冊(cè) 發(fā)布
ecpg [option...] file...
ecpg是一個(gè)嵌入的用于C語言的SQL預(yù)編譯器。 它把嵌有SQL語句的C程序通過將SQL調(diào)用替換成特殊的函數(shù)調(diào)用的方法轉(zhuǎn)換成普通的C代碼。 然后輸出的文件就可以用任何C編譯工具進(jìn)行處理。
ecpg將把命令行上給出的每個(gè)輸入文件轉(zhuǎn)換成對(duì)應(yīng)的C輸出文件。 輸入文件最好有.pgc擴(kuò)展名,這樣, 這個(gè)擴(kuò)展將被替換成.c來決定輸出文件名。 如果輸入文件的擴(kuò)展不是.pgc,那么輸出文件名將通過在全 文件名后面附加.c來生成。 輸出文件名也可以用-o選項(xiàng)覆蓋。
本手冊(cè)頁并不描述嵌入的SQL語句,參閱Chapter 33獲更多信息。
ecpg接受下面命令行參數(shù):
為SQL代碼自動(dòng)生成某種C代碼。目前,這個(gè)選項(xiàng)可以用于EXEC SQL TYPE。
設(shè)置一個(gè)兼容模式。mode可以是INFORMIX或者 INFORMIX_SE之一。
定義一個(gè)C預(yù)處理器符號(hào)
同時(shí)也分析系統(tǒng)包含文件
聲明一個(gè)附加的包含路徑。用于尋找通過EXEC SQL INCLUDE包含的文件。 缺省是:.(當(dāng)前目錄)、/usr/local/include、 在編譯時(shí)定義的PostgreSQL包含路徑(缺省為 /usr/local/pgsql/include)、/usr/include。 順序同上。
指定ecpg應(yīng)該把它的所有輸出寫到給出的 filename里。
選擇一個(gè)運(yùn)行時(shí)行為。目前,option只能是 no_indicator。
打開自動(dòng)提交模式。在這種模式像,每個(gè)查詢都自動(dòng)提交, 除非它是包圍在一個(gè)明確的事務(wù)塊中。在缺省模式下, 命令只是在發(fā)出EXEC SQL COMMIT的時(shí)候提交。
打印額外的信息,包括版本和"包含"路徑。
打印ecpg版本,然后退出。
顯示ecpg命令行參數(shù)的幫助信息并推出。
顯示ecpg命令行參數(shù)幫助,然后退出。
在編譯預(yù)處理的C代碼文件的時(shí)候,編譯器需要能夠找到PostgreSQL 包含目錄里面的ECPG頭文件。 因此,在調(diào)用編譯器的時(shí)候可能需要使用-I選項(xiàng) (比如-I/usr/local/pgsql/include)。
使用了嵌入SQL的C代碼必須和libecpg庫鏈接, 比如,使用這樣的鏈接選項(xiàng):-L/usr/local/pgsql/lib -lecpg。
這些目錄的實(shí)際值可以通過pg_config找到。
如果你有一個(gè)叫prog1.pgc的嵌入SQL的C源代碼, 你可以用下面的命令序列創(chuàng)建一個(gè)可執(zhí)行程序:
ecpg prog1.pgc cc -I/usr/local/pgsql/include -c prog1.c cc -o prog1 prog1.o -L/usr/local/pgsql/lib -lecpg