首页 > 代码库 > OTL翻译(7) -- otl_exception类
OTL翻译(7) -- otl_exception类
otl_exception
这个类是OTL用来抛出异常的类。如果数据库API返回一个非0的错误值,则OTL会将会抛出一个otl_exception的异常。一个otl_exception异常有可能是一个数据库错误或是一个OTL定义的错误。
序号 | 函数、成员变量 | 说明 |
1 | char stm_text[2048 or OTL_EXCEPTION_STM_TEXT_SIZE] | OTL异常里面SQL语句的前2047个字符。当设置了stream label(在otl_stream或open()函数里面的sqlstm_label设置)后,它就被SQL的数据成员替代了SQL语句。 |
2 | char var_info[256] | 如果抛出了“Incompatible data types in stream operation”异常,则该变量被用来填充绑定变量和字段信息。如:bind variable name/select output column number <datatype> |
3 | #if defined(OTL_UNICODE_EXCEPTION_AND_RLOGON) SQLWCHAR msg[1000]; #else unsigned char msg[1000]; #endif | 数据库错误信息或是OTL错误信息。 |
4 | int code | 数据库错误的编码或是OTL错误编码 |
5 | #if defined(OTL_UNICODE_EXCEPTION_AND_RLOGON) SQLWCHAR sqlstate[1000]; #else unsigned char sqlstate[1000]; #endif | 仅适用于ODBC或DB2 CLI。对于OCI它始终为空。 用来存放SQL的状态信息,详细请见ODBC或DB2 CLI手册。 |
6 | #if defined(OTL_EXTENED_EXCEPTION) #if defined(OTL_UNICODE_EXCEPTION_AND_RLOGON) int arr_len; SQLWCHAR *msg_arr[]; SQLWCHAR *sqlstate_arr[]; int code_arr[] #else int arr_len; char * msg_arr[]; char * sqlstate_arr[]; int code_arr[]; #endif #endif | 扩展字段信息。通过SQLGetDiagRec()函数,获取所有的ODBC/DB2 CLI动态记录信息。 OTL的异常往往只取第一条信息,但对于ODBC、DB2 CLI在某些情况下,它会带有多条动态的信息,此时该变量里面包含有所有的信息。arr_len是信息数量。 msg_arr里面是消息;sqlstate_arr里面是sqlstate;code_arr里面是错误码。 |
7 | #if defined(OTL_EXCEPTION_ENABLE_ERROR_OFFSET) int error_offset #endif | 仅适用于OCI。 SQL语句解析错误码。 |
8 | enum{disabled = 0,enabled = 1}; | 定义两个常量用于静态的SQL语句。 |
OTL翻译(7) -- otl_exception类