資料庫(proc程式設計)

2021-06-18 14:52:00 字數 1720 閱讀 1708

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...