1、proc是什麼?
proc是oracle用來預編譯嵌入sql語句的c程式。
下圖展示了proc*c/c++程式的編寫、編譯流程。
根據上圖可以看出proc只是預編譯一下源程式,即把*.pc預編譯成標準的c或c++程式。
2、怎樣編譯、鏈結*.pc應用程式?
本文以linux環境為例,首先要保證c/c++的編譯器(gcc/g++)可以使用。然
後就是要正確安裝oracle資料庫伺服器和proc development tools元件,一般會預設安
裝。此時應當保證proc命令可以使用。
如果不能使用則檢查以下環境變數(.bash_profile)是否配置正確:
oracle_home=/home/oracle #oracle軟體安裝路徑
oracle_sid=zcm #oracle資料庫例項名
path=$/bin:$:. #可執行程式搜尋路徑
ld_library_path=$/lib:$:. #鏈結庫檔案搜尋路徑
export oracle_home oracle_sid path ld_library_path
舉例如下分三步走:
第一步:編寫乙個簡單的proc程式(命名為login.pc):
#include
#include "sqlca.h"
exec sql begin declare section;
char user = "scott";
char pass = "scott";
exec sql end declare section;
int main(int argc, char **argv)
第二步:在命令列輸入proc預編譯pc檔案為c檔案
$ proc iname=login.pc oname=login.c
注意此時可能會報錯:
error at line 34, column 11 in file /usr/include/stdio.h
# include
..........1
pcc-s-02015, unable to open include file
意思就是找不到stddef.h這個檔案
解決辦法:
找到該檔案以及其他需要檔案的絕對路徑:
$ find /usr -name stddef.h
將該絕對路徑寫入$/precomp/admin/pcscfg.cfg
include=(/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.4/include,/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/include)
第三步:用gcc編譯、鏈結c原始檔
$ gcc -i $/precomp/public login.c -o login -l $/lib -l clntsh
上面:'-i'指定標頭檔案路徑
'-o'指定輸出檔名
'-l'指定庫路徑
'-l'指定鏈結動態庫名字
最後就可以執行login程式了
資料庫 Proc程式設計一
proc程式設計 嵌入式sql sql寫入到c語言程式中 proc程式設計標頭檔案路徑 11.2.0 dbhome 1 precomp public proc程式設計要注意proc編譯器也會使用gcc編譯器中的標頭檔案,所以需要在proc編譯器中進行配置,加上系統的標頭檔案路徑 11.2.0 dbh...
資料庫 proc程式設計四
錯誤處理機制 當在pro c c 應用程式中執行sql語句中,oracle會將最近執行的sql語句的狀態資訊儲存到狀態變數sqlcode sqlstate或者sqlca結構中。當sql語句執行成功時,一般情況下不需要進行任何其他處理 當sql語句執行失敗時,應用程式應該能夠檢測到失敗資訊,並進行適當...
資料庫 proc程式設計五
define crt secure no warnings include include include include sqlca.h 注意 在oracle中,如果使用char定長型別,那麼資料庫中的資料如果不足20,那麼oracle預設以空格填充 varchar是變長型別,不足20,oracl...