除錯PROC*C程式時,SQL陳述句執行資訊都存放在sqlca和oraca中
目錄
- sqlca
- 結構定義
- 欄位說明
- oraca
- 結構定義
- 欄位說明
sqlca
sqlca是ORACLE提供的兩個通信區之一,
sqlca實際上是一個結構變數,其目的是為了診斷錯誤和保存事件處理結果
sqlca中包含了sql陳述句運行時資訊:
1. Oracle錯誤碼
2. 警告資訊
3. 事件資訊
4. 處理的記錄集行計數
5. 診斷資訊
結構定義
struct sqlca
{
/* ub1 */ char sqlcaid[8];
/* b4 */ int sqlabc;
/* b4 */ int sqlcode;
struct
{
/* ub2 */ unsigned short sqlerrml;
/* ub1 */ char sqlerrmc[70];
} sqlerrm;
/* ub1 */ char sqlerrp[8];
/* b4 */ int sqlerrd[6];
/* ub1 */ char sqlwarn[8];
/* ub1 */ char sqlext[8];
};
#ifdef SQLCA_INIT
= {
{'S', 'Q', 'L', 'C', 'A', ' ', ' ', ' '},
sizeof(struct sqlca),
0,
{ 0, {0}},
{'N', 'O', 'T', ' ', 'S', 'E', 'T', ' '},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0}
}
欄位說明
- sqlcaid:
標識SQL通訊區,被初始化唯sqlca - sqlabc:
包含sqlca結構的長度(以位元組為單位) - sqlcode:
最近執行的SQL陳述句的狀態碼
0:正確執行 ;>0:執行了陳述句,但沒有記錄行回傳;<0:資料庫,系統,網路故障,SQL陳述句沒有執行 - sqlerrml:
sqlerrmc陣列的實際文本長度 - sqlerrmc:
與sqlcode一致的對應的錯誤資訊文本 只有當sqlcode<0才能訪問,否則是上次錯誤資訊 - sqlerrp:
保留欄位,沒有使用 - sqlerrd:
[0],[1],[3],[5]沒有使用 sqlerrd[2]SQL陳述句處理的行數,如果SQL執行失敗,則沒有定義 ;[4]出現語法分析錯誤的字符開始位置,位置從0開始 - sqlwarn:
警告標記
[0]其他警告標記設定,該標記就被設定
[1]欄位值被截斷輸出到宿主變數的時候被設定
[2]沒有使用
[3]查詢欄位個數不等于宿主變數個數的時候被設定
[4]表中記錄被沒有where子句的delete,update處理的時候被設定
[5]當EXEC SQL CREATE{PROCDURE|FUNCTION|PACKAGE}陳述句編譯錯誤的時候被設定
[6],[7]沒有被使用 - sqlext:
沒有被使用
oraca
結構定義
欄位說明
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/179152.html
標籤:其他
上一篇:SAP總成物料的組件分配報表邏輯
下一篇:MYSQL資料庫DML常見的命令
