From 1a1b88dd5a0a23c64bf4aee2e64f30c418181be0 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Fri, 12 Jul 2024 14:40:32 +1000 Subject: [PATCH] odbc32: SQLBindParameter handle fallback function --- dlls/odbc32/proxyodbc.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/dlls/odbc32/proxyodbc.c b/dlls/odbc32/proxyodbc.c index 9a079175d42..aa886d01e33 100644 --- a/dlls/odbc32/proxyodbc.c +++ b/dlls/odbc32/proxyodbc.c @@ -5524,9 +5524,37 @@ static SQLRETURN bind_parameter_win32( struct statement *stmt, SQLUSMALLINT para SQLSMALLINT value_type, SQLSMALLINT param_type, SQLULEN size, SQLSMALLINT digits, SQLPOINTER value, SQLLEN buflen, SQLLEN *len ) { + struct environment *env = (struct environment *)find_object_type(SQL_HANDLE_ENV, stmt->hdr.parent); + + if (env && env->attr_version == SQL_OV_ODBC3 && env->driver_ver == SQL_OV_ODBC2) + { + /* ODBC v2 */ + /* TODO: Make function */ + if (value_type == SQL_C_TYPE_TIME) + value_type = SQL_C_TIME; + else if (value_type == SQL_C_TYPE_DATE) + value_type = SQL_C_DATE; + else if (value_type == SQL_C_TYPE_TIMESTAMP) + value_type = SQL_C_TIMESTAMP; + + /* TODO: Make function */ + if (param_type == SQL_TIME) + param_type = SQL_TYPE_TIME; + else if (param_type == SQL_DATE) + param_type = SQL_TYPE_DATE; + else if (param_type == SQL_TIMESTAMP) + param_type = SQL_TYPE_TIMESTAMP; + } + if (stmt->hdr.win32_funcs->SQLBindParameter) return stmt->hdr.win32_funcs->SQLBindParameter( stmt->hdr.win32_handle, param, io_type, value_type, param_type, size, digits, value, buflen, len ); + else if(stmt->hdr.win32_funcs->SQLBindParam) + { + return stmt->hdr.win32_funcs->SQLBindParam( stmt->hdr.win32_handle, param, value_type, param_type, + size, digits, value, len); + } + return SQL_ERROR; } -- 2.47.2