- Support for odbc 1.0 alloc functions
This commit is contained in:
parent
41d219a5c1
commit
d1142b703c
|
@ -12,7 +12,6 @@
|
||||||
* call odbc_set_environment to set the ODBC version */
|
* call odbc_set_environment to set the ODBC version */
|
||||||
s48_value odbc_alloc_environment_handle()
|
s48_value odbc_alloc_environment_handle()
|
||||||
{
|
{
|
||||||
|
|
||||||
SQLHENV henv;
|
SQLHENV henv;
|
||||||
SQLRETURN retval;
|
SQLRETURN retval;
|
||||||
|
|
||||||
|
@ -20,23 +19,14 @@ s48_value odbc_alloc_environment_handle()
|
||||||
ODBC_DEBUG_PRINTF_2("odbc_alloc_environment(): %x\n", henv);
|
ODBC_DEBUG_PRINTF_2("odbc_alloc_environment(): %x\n", henv);
|
||||||
|
|
||||||
switch (retval)
|
switch (retval)
|
||||||
{
|
{
|
||||||
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||||
{
|
return s48_enter_integer(henv);
|
||||||
odbc_sql_set_env_attr(henv);
|
case SQL_ERROR:
|
||||||
return s48_enter_integer((long)henv);
|
ODBC_RAISE_EXCEPTION("SQLAllocHandle returned SQL_ERROR");
|
||||||
}
|
default:
|
||||||
case SQL_ERROR:
|
ODBC_RAISE_EXCEPTION("SQLAllocHandle unknown return value");
|
||||||
{
|
}
|
||||||
ODBC_RAISE_EXCEPTION("SQLAllocHandle returned SQL_ERROR");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
ODBC_RAISE_EXCEPTION("SQLAllocHandle unknown return value");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* given a valid environment handle (type SQLHENV) this function
|
/* given a valid environment handle (type SQLHENV) this function
|
||||||
|
@ -147,6 +137,72 @@ s48_value odbc_alloc_statement_handle(s48_value conn_handle) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* for ODBC 1.0 compatibility */
|
||||||
|
s48_value odbc_sql_alloc_env()
|
||||||
|
{
|
||||||
|
SQLRETURN retval;
|
||||||
|
SQLHENV eh;
|
||||||
|
|
||||||
|
ODBC_DEBUG_PRINTF("odbc_sql_alloc_env()\n");
|
||||||
|
|
||||||
|
retval = SQLAllocEnv(&eh);
|
||||||
|
switch (retval)
|
||||||
|
{
|
||||||
|
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||||
|
return s48_enter_inteeger(eh);
|
||||||
|
case SQL_ERROR:
|
||||||
|
ODBC_RAISE_EXCEPTION("SQLAllocHandle() returned SQL_ERROR");
|
||||||
|
default:
|
||||||
|
ODBC_RAISE_EXCEPTION("SQLAllocHandle() returned unknown error code");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
s48_value odbc_sql_alloc_connect(s48_value env_handle)
|
||||||
|
{
|
||||||
|
SQLRETURN retval;
|
||||||
|
SQLHENV eh;
|
||||||
|
SQLHDBC ch;
|
||||||
|
|
||||||
|
eh = (SQLHENV) s48_extract_integer(env_handle);
|
||||||
|
ODBC_DEBUG_PRINTF("odbc_sql_alloc_connect(): eh:%d\n");
|
||||||
|
|
||||||
|
retval = SQLAllocConnect(ch, &eh);
|
||||||
|
switch (retval)
|
||||||
|
{
|
||||||
|
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||||
|
return s48_enter_integer(ch);
|
||||||
|
case SQL_ERROR:
|
||||||
|
ODBC_RAISE_EXCEPTION("SQLAllocConnect returned SQL_ERROR");
|
||||||
|
case SQL_INVALID_HANDLE:
|
||||||
|
ODBC_RAISE_EXCEPTION("SQLAllocConnect got invalid handle");
|
||||||
|
default:
|
||||||
|
ODBC_RAISE_EXCEPTION("SQLAllocConnect returned unknown error");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
s48_value odbc_sql_alloc_stmt(s48_value conn_handle)
|
||||||
|
{
|
||||||
|
SQLRETURN retval;
|
||||||
|
SQLHDBC ch;
|
||||||
|
SQLHSTMT sh;
|
||||||
|
|
||||||
|
ch = (SQLHDBC) s48_extract_integer(conn_handle);
|
||||||
|
ODBC_DEBUG_PRINTF("odbc_sql_alloc_stmt(): ch:%d\n");
|
||||||
|
|
||||||
|
retval = SQLAllocStmt(ch, &eh);
|
||||||
|
switch (retval)
|
||||||
|
{
|
||||||
|
case SQL_SUCCESS: case SQL_SUCCESS_WITH_INFO:
|
||||||
|
return s48_enter_integer(eh);
|
||||||
|
case SQL_ERROR:
|
||||||
|
ODBC_RAISE_EXCEPTION("SQLAllocStmt returned SQL_ERROR");
|
||||||
|
case SQL_INVALID_HANDLE:
|
||||||
|
ODBC_RAISE_EXCEPTION("SQLAllocStmt got invalid handle");
|
||||||
|
default:
|
||||||
|
ODBC_RAISE_EXCEPTION("SQLAllocStmt returned unknown error code");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Connect to a server */
|
/* Connect to a server */
|
||||||
s48_value odbc_sql_connect(s48_value connection_handle,
|
s48_value odbc_sql_connect(s48_value connection_handle,
|
||||||
s48_value ds_name,
|
s48_value ds_name,
|
||||||
|
@ -794,7 +850,6 @@ s48_value odbc_sql_set_env_attr_int(s48_value env_handle,
|
||||||
s48_value attribute,
|
s48_value attribute,
|
||||||
s48_value value)
|
s48_value value)
|
||||||
{
|
{
|
||||||
|
|
||||||
SQLHENV eh;
|
SQLHENV eh;
|
||||||
SQLINTEGER attr;
|
SQLINTEGER attr;
|
||||||
SQLUINTEGER val;
|
SQLUINTEGER val;
|
||||||
|
|
|
@ -178,6 +178,11 @@ s48_value odbc_alloc_connection_handle(s48_value env_handle);
|
||||||
/* Given a valid connection handle get a statement handle */
|
/* Given a valid connection handle get a statement handle */
|
||||||
s48_value odbc_alloc_statement_handle(s48_value stmt_handle);
|
s48_value odbc_alloc_statement_handle(s48_value stmt_handle);
|
||||||
|
|
||||||
|
/* for ODBC 1.0 compatibility */
|
||||||
|
s48_value odbc_sql_alloc_env();
|
||||||
|
s48_value odbc_sql_alloc_connect(s48_value env_handle);
|
||||||
|
s48_value odbc_sql_alloc_stmt(s48_value conn_handle);
|
||||||
|
|
||||||
/* Connect to a server */
|
/* Connect to a server */
|
||||||
s48_value odbc_sql_connect(s48_value connection_handle,
|
s48_value odbc_sql_connect(s48_value connection_handle,
|
||||||
s48_value ds_name,
|
s48_value ds_name,
|
||||||
|
|
|
@ -439,7 +439,8 @@
|
||||||
;;; PART 1
|
;;; PART 1
|
||||||
|
|
||||||
(define (odbc-alloc-environment-handle)
|
(define (odbc-alloc-environment-handle)
|
||||||
(let ((env-handle (really-make-environment-handle (odbc-alloc-environment-handle-internal))))
|
(let ((env-handle (really-make-environment-handle
|
||||||
|
(odbc-alloc-environment-handle-internal))))
|
||||||
(add-finalizer! env-handle odbc-sql-free-handle)
|
(add-finalizer! env-handle odbc-sql-free-handle)
|
||||||
env-handle))
|
env-handle))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue