Proc C C 入門之通訊區

2021-07-25 23:05:39 字數 2828 閱讀 7776

通訊區域提供了sql語句和資料庫之間通訊的橋梁!oracle提供了兩個通訊區,分別是sqlca以及oraca!!!

在proc使用通訊區,要麼用#include命令包含到源**中,要麼用嵌入式sql語句包含到**中:

exec sql include sqlca;

struct  sqlca

sqlerrm;

char sqlerrp[8];//保留字段,沒有使用

//sqlerrd[0],sqlerrd[1]沒有使用

//sqlerrd[2]sql語句處理的行數,如果sql執行失敗,則沒有定義

//sqlerrd[3]沒有使用

//sqlerrd[4]出現語法分析錯誤的字元開始位置,第乙個位置是0

//sqlerrd[5]沒有使用

long sqlerrd[6];

//警告標記

//sqlwarn[0]其他警告標記設定,該標記就被設定

//sqlwarn[1]字段值被截斷輸出到宿主變數的時候被設定

//sqlwarn[2]沒有使用

//sqlwarn[3]查詢字段個數不等於宿主變數個數的時候被設定

//sqlwarn[4]表中記錄被沒有where子句的delete,update處理的時候被設定

//sqlwarn[5]當exec sql create語句編譯錯誤的時候被設定

//sqlwarn[6],sqlwarn[7]沒有被使用

char sqlwarn[8];

char sqlext[8];//沒有被使用

};struct sqlca sqlca;

sqlcode用於儲存最近一次執行sql指令的狀態

返回結果說明0

正常>0有乙個異常發生

<0系統錯誤,可能來自網路,或資料庫本身 示例

void main()

void err_report( struct sqlca sqlca)

當需要更進一步的資訊時,oraca將幫助我們達成願望,所以oraca也可以看作時sqlca的補充和輔助.

struct   oraca

orastxt; /* text of last sql stmt */

struct orasfnm; /* name of file containing sql stmt */

/* ub4 */

int oraslnr; /* line nr-within-file of sql stmt */

/* ub4 */

int orahoc; /* highest max open oracurs requested */

/* ub4 */

int oramoc; /* max open oracursors required */

/* ub4 */

int oracoc; /* current oracursors open */

/* ub4 */

int oranor; /* nr of oracursor re-assignments */

/* ub4 */

int oranpr; /* nr of parses */

/* ub4 */

int oranex; /* nr of executes */

};

結構體成員及其說明:

orahchf如果oradbgf=1,那oracchf遵循下列規則:

orastxtf可以是以下各值:

orasfnm

oraslnr標識當前sql語句所在行的行號

orahoc執行時最多能開啟的游標數

oramoc執行時對多需要開啟的游標數

oracoc當前開啟的游標數

oranor記錄游標緩衝池的再賦值次數

oranpr記錄sql語句分析次數

oranex記錄sql語句執行的次數

要使用oraca,那麼就要顯式的載入oraca結構到pro*c程式中。可通過語句

exec sql include oraca;

exec oracle option(oraca=yes);

//錯誤sql語言給列印出來

void sqlerr02()

*/printf("中國\n");

printf("出錯的sql:%.*s\n", stmlen, stm);

printf("出錯原因:%.*s\n", sqlca.sqlerrm.sqlerrml, sqlca.sqlerrm.sqlerrmc);

//printf("出錯原因:%.70s\n", sqlca.sqlerrm.sqlerrml, sqlca.sqlerrm.sqlerrmc);

exec sql rollback work release;

printf("func sqlerr02() end\n");

exit(1);

}

Proc C C 入門之指示器變數

使用者能夠將任何乙個宿主變數同乙個指示變數進行關聯。指示器變數必須被定義為 2 個字 節的整數型別 short 在 sql 語句中,如果沒有指定 indicator 關鍵字,指示變數必須 緊跟在與其關聯的宿主變數後。如果使用 declare section 宣告宿主變數,則相關指示 變數也必須採用 ...

序列通訊與並行通訊區別

序列通訊 一條資訊的各位資料被逐位按順序傳送的通訊方式稱為序列通訊。序列通訊的特點是 資料位傳送,傳按位順序進行,最少只需一根傳輸線即可完成,成本低但送速度慢。序列通訊的距離可以從幾公尺到幾千公尺。根據資訊的傳送方向,序列通訊可以進一步分為單工 半雙工和全雙工三種。資訊只能單向傳送為單工 資訊能雙向...

同步通訊與非同步通訊區別

同步通訊原理 同步通訊是一種連續序列傳送資料的通訊方式,一次通訊只傳送一幀資訊。這裡的資訊幀與非同步通訊中的字元幀不同,通常含有若干個資料字元。採用同步通訊時,將許多字元組成乙個資訊組,這樣,字元可以乙個接乙個地傳輸,但是,在每組資訊 通常稱為幀 的開始要加上同步字元,在沒有資訊要傳輸時,要填上空字...