- Don't distinguish between SQL_SUCCESS and SQL_SUCCESS_WITH_INFO.
- Don't call SQLGetDiagRec() automatically on SQL_ERROR, some ODBC seem to have a broken SQLGetDiagRec() implementation. Let user call SQLGetDiagRec() from Scheme at his own risk. The ODBC documentation thinks it's a good idea to call SQLGetDiagRec() after each ODBC-call that might return SQL_SUCCESS_WITH_INFO. IMHO this sucks. However it's now possible to do so in the user's Scheme code.
This commit is contained in:
parent
7efd91d54f
commit
23151f3ad1
286
scsh/odbc/odbc.c
286
scsh/odbc/odbc.c
|
@ -22,20 +22,13 @@ s48_value odbc_alloc_environment_handle()
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
odbc_sql_set_env_attr(henv);
|
||||
return s48_enter_integer((long)henv);
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_ENV, henv);
|
||||
odbc_sql_set_env_attr(henv);
|
||||
return s48_enter_integer((long)henv);
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_ENV, henv);
|
||||
ODBC_RAISE_EXCEPTION("SQLAllocHandle returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -63,18 +56,12 @@ void odbc_sql_set_env_attr(SQLHENV env_handle)
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return;
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_ENV, env_handle);
|
||||
return;
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_ENV, env_handle);
|
||||
ODBC_RAISE_EXCEPTION("SQLSetEnvAttr returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -85,7 +72,7 @@ void odbc_sql_set_env_attr(SQLHENV env_handle)
|
|||
}
|
||||
default:
|
||||
{
|
||||
ODBC_RAISE_EXCEPTION("SQLSetEnvAttr returned unknown error code\n");
|
||||
ODBC_RAISE_EXCEPTION("SQLSetEnvAttr returned unknown error code");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -106,18 +93,12 @@ s48_value odbc_alloc_connection_handle(s48_value env_handle) {
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return s48_enter_integer((long)hdbc);
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_DBC, envh);
|
||||
return s48_enter_integer((long)hdbc);
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_DBC, envh);
|
||||
ODBC_RAISE_EXCEPTION("SQLAllocHandle returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -149,18 +130,12 @@ s48_value odbc_alloc_statement_handle(s48_value conn_handle) {
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return s48_enter_integer((long)hstmt);
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_DBC, ch);
|
||||
return s48_enter_integer((long)hstmt);
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_DBC, ch);
|
||||
ODBC_RAISE_EXCEPTION("SQLAllocHandle returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -208,18 +183,12 @@ s48_value odbc_sql_connect(s48_value connection_handle,
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
/* ODBC_DEBUG_DIAGREC(SQL_HANDLE_DBC, ch); */
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
/* ODBC_DEBUG_DIAGREC(SQL_HANDLE_DBC, ch); */
|
||||
ODBC_RAISE_EXCEPTION("SQLConnect returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -280,8 +249,6 @@ s48_value odbc_sql_data_sources(s48_value env_handle)
|
|||
result = s48_cons(s48_cons(s48_enter_string(server_name),
|
||||
s48_enter_string(driver_descr)),
|
||||
result);
|
||||
if (retval == SQL_SUCCESS_WITH_INFO)
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_ENV, eh);
|
||||
break;
|
||||
}
|
||||
case SQL_NO_DATA:
|
||||
|
@ -291,7 +258,6 @@ s48_value odbc_sql_data_sources(s48_value env_handle)
|
|||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_ENV, eh);
|
||||
ODBC_RAISE_EXCEPTION("SQLDataSources returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -302,7 +268,6 @@ s48_value odbc_sql_data_sources(s48_value env_handle)
|
|||
}
|
||||
default:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_ENV, eh);
|
||||
ODBC_RAISE_EXCEPTION("SQLDataSources returned unknown error code");
|
||||
break;
|
||||
}
|
||||
|
@ -350,8 +315,6 @@ s48_value odbc_sql_drivers(s48_value env_handle)
|
|||
result = s48_cons(s48_cons(s48_enter_string(driver_descr),
|
||||
s48_enter_string(driver_attr)),
|
||||
result);
|
||||
if (retval == SQL_SUCCESS_WITH_INFO)
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_ENV, eh);
|
||||
break;
|
||||
}
|
||||
case SQL_NO_DATA:
|
||||
|
@ -361,7 +324,6 @@ s48_value odbc_sql_drivers(s48_value env_handle)
|
|||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_ENV, eh);
|
||||
ODBC_RAISE_EXCEPTION("SQLDrivers returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -372,7 +334,6 @@ s48_value odbc_sql_drivers(s48_value env_handle)
|
|||
}
|
||||
default:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_ENV, eh);
|
||||
ODBC_RAISE_EXCEPTION("SQLDrivers returned unknown error code");
|
||||
break;
|
||||
}
|
||||
|
@ -403,18 +364,12 @@ s48_value odbc_sql_get_info_int(s48_value conn_handle, s48_value info_key)
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return s48_enter_integer(info);
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_DBC, ch);
|
||||
return s48_enter_integer(info);
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_DBC, ch);
|
||||
ODBC_RAISE_EXCEPTION("SQLGetInfo returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -451,18 +406,12 @@ s48_value odbc_sql_get_info_string(s48_value conn_handle, s48_value info_key)
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return s48_enter_string(info);
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_DBC, ch);
|
||||
return s48_enter_string(info);
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_DBC, ch);
|
||||
ODBC_RAISE_EXCEPTION("SQLGetInfo returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -498,18 +447,12 @@ s48_value odbc_sql_get_func_exists(s48_value conn_handle, s48_value fun_id)
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return SQL_FUNC_EXISTS(supported, fi) == SQL_TRUE ? S48_TRUE : S48_FALSE;
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_DBC, ch);
|
||||
return SQL_FUNC_EXISTS(supported, fi) == SQL_TRUE ? S48_TRUE : S48_FALSE;
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_DBC, ch);
|
||||
ODBC_RAISE_EXCEPTION("SQLGetFunctions returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -543,18 +486,12 @@ s48_value odbc_sql_get_type_info(s48_value stmt_handle, s48_value data_type)
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
ODBC_RAISE_EXCEPTION("SQLGetTypeInfo returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -599,18 +536,12 @@ s48_value odbc_sql_set_connect_attr_int(s48_value conn_handle,
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_DBC, ch);
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_DBC, ch);
|
||||
ODBC_RAISE_EXCEPTION("SQLSetConnectAttr returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -646,18 +577,12 @@ s48_value odbc_sql_set_connect_attr_string(s48_value conn_handle,
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_DBC, ch);
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_DBC, ch);
|
||||
ODBC_RAISE_EXCEPTION("SQLSetConnectAttr returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -675,7 +600,7 @@ s48_value odbc_sql_set_connect_attr_string(s48_value conn_handle,
|
|||
}
|
||||
|
||||
s48_value odbc_sql_get_connect_attr_string(s48_value conn_handle,
|
||||
s48_value attribute)
|
||||
s48_value attribute)
|
||||
{
|
||||
|
||||
SQLHDBC ch;
|
||||
|
@ -692,18 +617,12 @@ s48_value odbc_sql_get_connect_attr_string(s48_value conn_handle,
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return s48_enter_string(buffer);
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_DBC, ch);
|
||||
return s48_enter_string(buffer);
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_DBC, ch);
|
||||
ODBC_RAISE_EXCEPTION("SQLGetConnectAttr returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -737,18 +656,12 @@ s48_value odbc_sql_get_connect_attr_int(s48_value conn_handle,
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return s48_enter_integer(buffer);
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_DBC, ch);
|
||||
return s48_enter_integer(buffer);
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_DBC, ch);
|
||||
ODBC_RAISE_EXCEPTION("SQLGetConnectAttr returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -785,18 +698,12 @@ s48_value odbc_sql_set_env_attr_int(s48_value env_handle,
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_ENV, eh);
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_DBC, eh);
|
||||
ODBC_RAISE_EXCEPTION("SQLSetEnvAttr returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -833,18 +740,12 @@ s48_value odbc_sql_get_env_attr_int(s48_value env_handle,
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return s48_extract_integer(val);
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_ENV, eh);
|
||||
return s48_extract_integer(val);
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_ENV, eh);
|
||||
ODBC_RAISE_EXCEPTION("SQLGetEnvAttr returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -882,18 +783,12 @@ s48_value odbc_sql_set_stmt_attr_int(s48_value stmt_handle,
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
ODBC_RAISE_EXCEPTION("SQLSetStmtAttr returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -931,18 +826,12 @@ s48_value odbc_sql_set_stmt_attr_string(s48_value stmt_handle,
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
ODBC_RAISE_EXCEPTION("SQLSetStmtAttr returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -976,18 +865,12 @@ s48_value odbc_sql_get_stmt_attr_int(s48_value stmt_handle,
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return s48_enter_integer(val);
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
return s48_enter_integer(val);
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
ODBC_RAISE_EXCEPTION("SQLGetStmtAttr returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -1020,18 +903,12 @@ s48_value odbc_sql_get_stmt_attr_string(s48_value stmt_handle,
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return s48_enter_string(buf);
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
return s48_enter_string(buf);
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
ODBC_RAISE_EXCEPTION("SQLGetStmtAttr returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -1078,15 +955,10 @@ s48_value odbc_sql_prepare(s48_value stmt_handle, s48_value stmt_txt)
|
|||
retval = SQLPrepare(sh, query, S48_STRING_LENGTH(stmt_txt));
|
||||
|
||||
switch (retval) {
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_INVALID_HANDLE:
|
||||
{
|
||||
ODBC_RAISE_EXCEPTION("SQLPrepare got invalid handle");
|
||||
|
@ -1094,7 +966,6 @@ s48_value odbc_sql_prepare(s48_value stmt_handle, s48_value stmt_txt)
|
|||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
ODBC_RAISE_EXCEPTION("SQLPrepare returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -1305,17 +1176,11 @@ s48_value odbc_sql_bind_parameter_exec_out(s48_value stmt_handle,
|
|||
ODBC_DEBUG_PRINTF("All parameters bound\n");
|
||||
|
||||
/* check the return value of SQLBindParameter */
|
||||
if (retval != SQL_SUCCESS) {
|
||||
if ((retval != SQL_SUCCESS) || (retval != SQL_SUCCESS_WITH_INFO)) {
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
break;
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
ODBC_RAISE_EXCEPTION("SQLBindParameter returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -1336,18 +1201,12 @@ s48_value odbc_sql_bind_parameter_exec_out(s48_value stmt_handle,
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
ODBC_RAISE_EXCEPTION("SQLExcute returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -1388,18 +1247,12 @@ s48_value odbc_sql_execute(s48_value stmt_handle)
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
ODBC_RAISE_EXCEPTION("SQLExecute returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -1433,18 +1286,12 @@ s48_value odbc_sql_execute_direct(s48_value stmt_handle,
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
ODBC_RAISE_EXCEPTION("SQLExecDirect returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -1534,20 +1381,14 @@ void check_sql_get_data_result(SQLRETURN retval, SQLHSTMT stmt_handle)
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return;
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, stmt_handle);
|
||||
return;
|
||||
}
|
||||
case SQL_NO_DATA:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, stmt_handle);
|
||||
ODBC_RAISE_EXCEPTION("SQLGetData returned SQL_NO_DATA");
|
||||
break;
|
||||
break;
|
||||
}
|
||||
case SQL_STILL_EXECUTING:
|
||||
{
|
||||
|
@ -1556,7 +1397,6 @@ void check_sql_get_data_result(SQLRETURN retval, SQLHSTMT stmt_handle)
|
|||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, stmt_handle);
|
||||
ODBC_RAISE_EXCEPTION("SQLGetData returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -1582,15 +1422,10 @@ s48_value odbc_sql_fetch(s48_value stmt_handle)
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_NO_DATA:
|
||||
{
|
||||
return SQL_NO_DATA;
|
||||
|
@ -1602,7 +1437,6 @@ s48_value odbc_sql_fetch(s48_value stmt_handle)
|
|||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
ODBC_RAISE_EXCEPTION("SQLFetch returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -1636,9 +1470,6 @@ s48_value odbc_sql_num_result_cols(s48_value stmt_handle)
|
|||
{
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
if (retval == SQL_SUCCESS_WITH_INFO)
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
|
||||
return s48_enter_integer(numcols);
|
||||
}
|
||||
case SQL_STILL_EXECUTING:
|
||||
|
@ -1648,7 +1479,6 @@ s48_value odbc_sql_num_result_cols(s48_value stmt_handle)
|
|||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
ODBC_RAISE_EXCEPTION("SQLNumResultCols returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -1673,8 +1503,11 @@ s48_value odbc_sql_describe_col(s48_value stmt_handle, s48_value column_number)
|
|||
SQLCHAR column_name[ODBC_DESCRIBE_COL_MAX_STR_LEN];
|
||||
SQLSMALLINT buf_len, data_type, digits, nullable;
|
||||
SQLUINTEGER col_size;
|
||||
s48_value col_rec;
|
||||
SQLRETURN retval;
|
||||
s48_value col_rec = S48_UNSPECIFIC;
|
||||
|
||||
S48_DECLARE_GC_PROTECT(1);
|
||||
S48_GC_PROTECT_1(col_rec);
|
||||
|
||||
ODBC_DEBUG_PRINTF("odbc_sql_describe_col\n");
|
||||
|
||||
|
@ -1694,9 +1527,6 @@ s48_value odbc_sql_describe_col(s48_value stmt_handle, s48_value column_number)
|
|||
{
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
if (retval == SQL_SUCCESS_WITH_INFO)
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
|
||||
col_rec = s48_make_record(odbc_column_record_type);
|
||||
S48_RECORD_SET(col_rec, SR_ODBC_COLUMN_NAME,
|
||||
s48_enter_string(column_name));
|
||||
|
@ -1708,7 +1538,8 @@ s48_value odbc_sql_describe_col(s48_value stmt_handle, s48_value column_number)
|
|||
s48_enter_integer(digits));
|
||||
S48_RECORD_SET(col_rec, SR_ODBC_COLUMN_NULLABLE,
|
||||
s48_enter_integer(nullable));
|
||||
|
||||
|
||||
S48_GC_UNPROTECT();
|
||||
return col_rec;
|
||||
}
|
||||
case SQL_STILL_EXECUTING:
|
||||
|
@ -1718,7 +1549,6 @@ s48_value odbc_sql_describe_col(s48_value stmt_handle, s48_value column_number)
|
|||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
ODBC_RAISE_EXCEPTION("SQLDescribeCol returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -1770,18 +1600,12 @@ s48_value odbc_sql_free_statement(s48_value stmt_handle, s48_value option)
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
ODBC_RAISE_EXCEPTION("SQLFreeStmt returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -1810,18 +1634,12 @@ s48_value odbc_sql_close_cursor(s48_value stmt_handle)
|
|||
retval = SQLCloseCursor(sh);
|
||||
|
||||
switch (retval) {
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
ODBC_RAISE_EXCEPTION("SQLCloseCursor returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -1850,18 +1668,12 @@ s48_value odbc_sql_cancel(s48_value stmt_handle)
|
|||
retval = SQLCancel(sh);
|
||||
|
||||
switch (retval) {
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_STMT, sh);
|
||||
ODBC_RAISE_EXCEPTION("SQLCancel returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -1880,7 +1692,7 @@ s48_value odbc_sql_cancel(s48_value stmt_handle)
|
|||
|
||||
/* Commits or rolls back a transaction */
|
||||
s48_value odbc_sql_endtran(s48_value handle_type, s48_value handle,
|
||||
s48_value completion_type)
|
||||
s48_value completion_type)
|
||||
{
|
||||
|
||||
SQLSMALLINT ht, ct;
|
||||
|
@ -1897,18 +1709,12 @@ s48_value odbc_sql_endtran(s48_value handle_type, s48_value handle,
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(ht, h);
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(ht, h);
|
||||
ODBC_RAISE_EXCEPTION("SQLEndTran returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -1947,18 +1753,12 @@ s48_value odbc_sql_disconnect(s48_value conn_handle)
|
|||
|
||||
switch (retval)
|
||||
{
|
||||
case SQL_SUCCESS:
|
||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_SUCCESS_WITH_INFO:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_DBC, ch);
|
||||
return S48_TRUE;
|
||||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(SQL_HANDLE_DBC, ch);
|
||||
ODBC_RAISE_EXCEPTION("SQLDisconnect returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -1998,7 +1798,6 @@ s48_value odbc_sql_free_handle(s48_value handle_type, s48_value handle)
|
|||
}
|
||||
case SQL_ERROR:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(ht, h);
|
||||
ODBC_RAISE_EXCEPTION("SQLFreeHandle returned SQL_ERROR");
|
||||
break;
|
||||
}
|
||||
|
@ -2009,7 +1808,6 @@ s48_value odbc_sql_free_handle(s48_value handle_type, s48_value handle)
|
|||
}
|
||||
default:
|
||||
{
|
||||
ODBC_DEBUG_DIAGREC(ht, h);
|
||||
ODBC_RAISE_EXCEPTION("SQLFreeHandle returned unknown error code");
|
||||
break;
|
||||
}
|
||||
|
@ -2114,7 +1912,7 @@ void odbc_debug_msgs(SQLSMALLINT handle_type, SQLHANDLE handle)
|
|||
&message_len);
|
||||
|
||||
if (retval == SQL_NO_DATA)
|
||||
break;
|
||||
break;
|
||||
|
||||
if (retval == SQL_INVALID_HANDLE) {
|
||||
printf("ODBC: Could not get debug information: invalid handle provided\n");
|
||||
|
|
Loading…
Reference in New Issue