通訊區域提供了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 宣告宿主變數,則相關指示 變數也必須採用 ...
序列通訊與並行通訊區別
序列通訊 一條資訊的各位資料被逐位按順序傳送的通訊方式稱為序列通訊。序列通訊的特點是 資料位傳送,傳按位順序進行,最少只需一根傳輸線即可完成,成本低但送速度慢。序列通訊的距離可以從幾公尺到幾千公尺。根據資訊的傳送方向,序列通訊可以進一步分為單工 半雙工和全雙工三種。資訊只能單向傳送為單工 資訊能雙向...
同步通訊與非同步通訊區別
同步通訊原理 同步通訊是一種連續序列傳送資料的通訊方式,一次通訊只傳送一幀資訊。這裡的資訊幀與非同步通訊中的字元幀不同,通常含有若干個資料字元。採用同步通訊時,將許多字元組成乙個資訊組,這樣,字元可以乙個接乙個地傳輸,但是,在每組資訊 通常稱為幀 的開始要加上同步字元,在沒有資訊要傳輸時,要填上空字...