- stubs for SHLWAPI.295 (create a URL shortcut ?) and SHLWAPI.394
[wine/multimedia.git] / dlls / odbc32 / proxyodbc.c
blob4e8518e1f1d918ed778480f164c2b1821ce0ee21
1 /*
2 * Win32 ODBC functions
4 * Proxy ODBC driver manager. This manager delegates all ODBC calls to a real ODBC driver manager which is either:
5 * 1) its name is defined in the environment variable LIB_ODBC_DRIVER_MANAGER
6 * 2) if LIB_ODBC_DRIVER_MANAGER is not defined, a default library libodbc.so will be used.
8 * Copyright 1999 Xiang Li, Corel Corporation
10 * This library is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU Lesser General Public
12 * License as published by the Free Software Foundation; either
13 * version 2.1 of the License, or (at your option) any later version.
15 * This library is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 * Lesser General Public License for more details.
20 * You should have received a copy of the GNU Lesser General Public
21 * License along with this library; if not, write to the Free Software
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25 #include "config.h"
26 #include "wine/port.h"
28 #include <stdio.h>
29 #include <stdlib.h>
30 #include <string.h>
31 #include <assert.h>
33 #include "winbase.h"
34 #include "wine/debug.h"
35 #include "wine/library.h"
37 #include "sql.h"
38 #include "sqltypes.h"
39 #include "sqlext.h"
41 #include "proxyodbc.h"
43 static BOOL ODBC_LoadDriverManager(void);
44 static BOOL ODBC_LoadDMFunctions(void);
46 WINE_DEFAULT_DEBUG_CHANNEL(odbc);
48 static const DM_FUNC template_func[] =
50 /* 00 */ { SQL_API_SQLALLOCCONNECT, "SQLAllocConnect", SQLAllocConnect, NULL },
51 /* 01 */ { SQL_API_SQLALLOCENV, "SQLAllocEnv", SQLAllocEnv, NULL },
52 /* 02 */ { SQL_API_SQLALLOCHANDLE, "SQLAllocHandle", SQLAllocHandle, NULL },
53 /* 03 */ { SQL_API_SQLALLOCSTMT, "SQLAllocStmt", SQLAllocStmt, NULL },
54 /* 04 */ { SQL_API_SQLALLOCHANDLESTD, "SQLAllocHandleStd", SQLAllocHandleStd, NULL },
55 /* 05 */ { SQL_API_SQLBINDCOL, "SQLBindCol", SQLBindCol, NULL },
56 /* 06 */ { SQL_API_SQLBINDPARAM, "SQLBindParam", SQLBindParam, NULL },
57 /* 07 */ { SQL_API_SQLBINDPARAMETER, "SQLBindParameter", SQLBindParameter, NULL },
58 /* 08 */ { SQL_API_SQLBROWSECONNECT, "SQLBrowseConnect", SQLBrowseConnect, NULL },
59 /* 09 */ { SQL_API_SQLBULKOPERATIONS, "SQLBulkOperations", SQLBulkOperations, NULL },
60 /* 10 */ { SQL_API_SQLCANCEL, "SQLCancel", SQLCancel, NULL },
61 /* 11 */ { SQL_API_SQLCLOSECURSOR, "SQLCloseCursor", SQLCloseCursor, NULL },
62 /* 12 */ { SQL_API_SQLCOLATTRIBUTE, "SQLColAttribute", SQLColAttribute, NULL },
63 /* 13 */ { SQL_API_SQLCOLATTRIBUTES, "SQLColAttributes", SQLColAttributes, NULL },
64 /* 14 */ { SQL_API_SQLCOLUMNPRIVILEGES, "SQLColumnPrivileges", SQLColumnPrivileges, NULL },
65 /* 15 */ { SQL_API_SQLCOLUMNS, "SQLColumns", SQLColumns, NULL },
66 /* 16 */ { SQL_API_SQLCONNECT, "SQLConnect", SQLConnect, NULL },
67 /* 17 */ { SQL_API_SQLCOPYDESC, "SQLCopyDesc", SQLCopyDesc, NULL },
68 /* 18 */ { SQL_API_SQLDATASOURCES, "SQLDataSources", SQLDataSources, NULL },
69 /* 19 */ { SQL_API_SQLDESCRIBECOL, "SQLDescribeCol", SQLDescribeCol, NULL },
70 /* 20 */ { SQL_API_SQLDESCRIBEPARAM, "SQLDescribeParam", SQLDescribeParam, NULL },
71 /* 21 */ { SQL_API_SQLDISCONNECT, "SQLDisconnect", SQLDisconnect, NULL },
72 /* 22 */ { SQL_API_SQLDRIVERCONNECT, "SQLDriverConnect", SQLDriverConnect, NULL },
73 /* 23 */ { SQL_API_SQLDRIVERS, "SQLDrivers", SQLDrivers, NULL },
74 /* 24 */ { SQL_API_SQLENDTRAN, "SQLEndTran", SQLEndTran, NULL },
75 /* 25 */ { SQL_API_SQLERROR, "SQLError", SQLError, NULL },
76 /* 26 */ { SQL_API_SQLEXECDIRECT, "SQLExecDirect", SQLExecDirect, NULL },
77 /* 27 */ { SQL_API_SQLEXECUTE, "SQLExecute", SQLExecute, NULL },
78 /* 28 */ { SQL_API_SQLEXTENDEDFETCH, "SQLExtendedFetch", SQLExtendedFetch, NULL },
79 /* 29 */ { SQL_API_SQLFETCH, "SQLFetch", SQLFetch, NULL },
80 /* 30 */ { SQL_API_SQLFETCHSCROLL, "SQLFetchScroll", SQLFetchScroll, NULL },
81 /* 31 */ { SQL_API_SQLFOREIGNKEYS, "SQLForeignKeys", SQLForeignKeys, NULL },
82 /* 32 */ { SQL_API_SQLFREEENV, "SQLFreeEnv", SQLFreeEnv, NULL },
83 /* 33 */ { SQL_API_SQLFREEHANDLE, "SQLFreeHandle", SQLFreeHandle, NULL },
84 /* 34 */ { SQL_API_SQLFREESTMT, "SQLFreeStmt", SQLFreeStmt, NULL },
85 /* 35 */ { SQL_API_SQLFREECONNECT, "SQLFreeConnect", SQLFreeConnect, NULL },
86 /* 36 */ { SQL_API_SQLGETCONNECTATTR, "SQLGetConnectAttr", SQLGetConnectAttr, NULL },
87 /* 37 */ { SQL_API_SQLGETCONNECTOPTION, "SQLGetConnectOption", SQLGetConnectOption, NULL },
88 /* 38 */ { SQL_API_SQLGETCURSORNAME, "SQLGetCursorName", SQLGetCursorName, NULL },
89 /* 39 */ { SQL_API_SQLGETDATA, "SQLGetData", SQLGetData, NULL },
90 /* 40 */ { SQL_API_SQLGETDESCFIELD, "SQLGetDescField", SQLGetDescField, NULL },
91 /* 41 */ { SQL_API_SQLGETDESCREC, "SQLGetDescRec", SQLGetDescRec, NULL },
92 /* 42 */ { SQL_API_SQLGETDIAGFIELD, "SQLGetDiagField", SQLGetDiagField, NULL },
93 /* 43 */ { SQL_API_SQLGETENVATTR, "SQLGetEnvAttr", SQLGetEnvAttr, NULL },
94 /* 44 */ { SQL_API_SQLGETFUNCTIONS, "SQLGetFunctions", SQLGetFunctions, NULL },
95 /* 45 */ { SQL_API_SQLGETINFO, "SQLGetInfo", SQLGetInfo, NULL },
96 /* 46 */ { SQL_API_SQLGETSTMTATTR, "SQLGetStmtAttr", SQLGetStmtAttr, NULL },
97 /* 47 */ { SQL_API_SQLGETSTMTOPTION, "SQLGetStmtOption", SQLGetStmtOption, NULL },
98 /* 48 */ { SQL_API_SQLGETTYPEINFO, "SQLGetTypeInfo", SQLGetTypeInfo, NULL },
99 /* 49 */ { SQL_API_SQLMORERESULTS, "SQLMoreResults", SQLMoreResults, NULL },
100 /* 50 */ { SQL_API_SQLNATIVESQL, "SQLNativeSql", SQLNativeSql, NULL },
101 /* 51 */ { SQL_API_SQLNUMPARAMS, "SQLNumParams", SQLNumParams, NULL },
102 /* 52 */ { SQL_API_SQLNUMRESULTCOLS, "SQLNumResultCols", SQLNumResultCols, NULL },
103 /* 53 */ { SQL_API_SQLPARAMDATA, "SQLParamData", SQLParamData, NULL },
104 /* 54 */ { SQL_API_SQLPARAMOPTIONS, "SQLParamOptions", SQLParamOptions, NULL },
105 /* 55 */ { SQL_API_SQLPREPARE, "SQLPrepare", SQLPrepare, NULL },
106 /* 56 */ { SQL_API_SQLPRIMARYKEYS, "SQLPrimaryKeys", SQLPrimaryKeys, NULL },
107 /* 57 */ { SQL_API_SQLPROCEDURECOLUMNS, "SQLProcedureColumns", SQLProcedureColumns, NULL },
108 /* 58 */ { SQL_API_SQLPROCEDURES, "SQLProcedures", SQLProcedures, NULL },
109 /* 59 */ { SQL_API_SQLPUTDATA, "SQLPutData", SQLPutData, NULL },
110 /* 60 */ { SQL_API_SQLROWCOUNT, "SQLRowCount", SQLRowCount, NULL },
111 /* 61 */ { SQL_API_SQLSETCONNECTATTR, "SQLSetConnectAttr", SQLSetConnectAttr, NULL },
112 /* 62 */ { SQL_API_SQLSETCONNECTOPTION, "SQLSetConnectOption", SQLSetConnectOption, NULL },
113 /* 63 */ { SQL_API_SQLSETCURSORNAME, "SQLSetCursorName", SQLSetCursorName, NULL },
114 /* 64 */ { SQL_API_SQLSETDESCFIELD, "SQLSetDescField", SQLSetDescField, NULL },
115 /* 65 */ { SQL_API_SQLSETDESCREC, "SQLSetDescRec", SQLSetDescRec, NULL },
116 /* 66 */ { SQL_API_SQLSETENVATTR, "SQLSetEnvAttr", SQLSetEnvAttr, NULL },
117 /* 67 */ { SQL_API_SQLSETPARAM, "SQLSetParam", SQLSetParam, NULL },
118 /* 68 */ { SQL_API_SQLSETPOS, "SQLSetPos", SQLSetPos, NULL },
119 /* 69 */ { SQL_API_SQLSETSCROLLOPTIONS, "SQLSetScrollOptions", SQLSetScrollOptions, NULL },
120 /* 70 */ { SQL_API_SQLSETSTMTATTR, "SQLSetStmtAttr", SQLSetStmtAttr, NULL },
121 /* 71 */ { SQL_API_SQLSETSTMTOPTION, "SQLSetStmtOption", SQLSetStmtOption, NULL },
122 /* 72 */ { SQL_API_SQLSPECIALCOLUMNS, "SQLSpecialColumns", SQLSpecialColumns, NULL },
123 /* 73 */ { SQL_API_SQLSTATISTICS, "SQLStatistics", SQLStatistics, NULL },
124 /* 74 */ { SQL_API_SQLTABLEPRIVILEGES, "SQLTablePrivileges", SQLTablePrivileges, NULL },
125 /* 75 */ { SQL_API_SQLTABLES, "SQLTables", SQLTables, NULL },
126 /* 76 */ { SQL_API_SQLTRANSACT, "SQLTransact", SQLTransact, NULL },
127 /* 77 */ { SQL_API_SQLGETDIAGREC, "SQLGetDiagRec", SQLGetDiagRec, NULL },
130 static PROXYHANDLE gProxyHandle = {
131 NULL,
132 FALSE,
133 FALSE,
134 FALSE,
135 ERROR_LIBRARY_NOT_FOUND,
136 { },
143 /* What is the difference between these two (dmHandle cf READY_AND_dmHandle)? When does one use one and when the other? */
145 #define CHECK_dmHandle() \
147 if (gProxyHandle.dmHandle == NULL) \
149 TRACE ("Not ready\n"); \
150 return SQL_ERROR; \
154 #define CHECK_READY_AND_dmHandle() \
156 if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL) \
158 TRACE ("Not ready\n"); \
159 return SQL_ERROR; \
163 SQLRETURN SQLDummyFunc()
165 TRACE("SQLDummyFunc: \n");
166 return SQL_SUCCESS;
169 /***********************************************************************
170 * MAIN_OdbcInit [Internal] Initializes the internal 'ODBC32.DLL'.
172 * PARAMS
173 * hinstDLL [I] handle to the DLL's instance
174 * fdwReason [I]
175 * lpvReserved [I] reserved, must be NULL
177 * RETURNS
178 * Success: TRUE
179 * Failure: FALSE
182 BOOL WINAPI
183 MAIN_OdbcInit(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
185 int i;
186 TRACE("Initializing or Finalizing proxy ODBC: %x,%lx,%p\n", hinstDLL, fdwReason, lpvReserved);
188 if (fdwReason == DLL_PROCESS_ATTACH)
190 TRACE("Loading ODBC...\n");
191 if (ODBC_LoadDriverManager())
192 ODBC_LoadDMFunctions();
194 else if (fdwReason == DLL_PROCESS_DETACH)
196 TRACE("Unloading ODBC...\n");
197 if (gProxyHandle.bFunctionReady)
199 for ( i = 0; i < NUM_SQLFUNC; i ++ )
201 gProxyHandle.functions[i].func = SQLDummyFunc;
205 if (gProxyHandle.dmHandle)
207 wine_dlclose(gProxyHandle.dmHandle,NULL,0);
208 gProxyHandle.dmHandle = NULL;
212 return TRUE;
216 /***********************************************************************
217 * ODBC_LoadDriverManager [Internal] Load ODBC library.
219 * PARAMS
221 * RETURNS
222 * Success: TRUE
223 * Failure: FALSE
226 static BOOL ODBC_LoadDriverManager(void)
228 const char *s = getenv("LIB_ODBC_DRIVER_MANAGER");
229 char error[256];
231 TRACE("\n");
233 gProxyHandle.bFunctionReady = FALSE;
235 if (s!= NULL && strlen (s) >= sizeof(gProxyHandle.dmLibName))
237 ERR("Driver name too long (%s)\n",s);
238 return FALSE;
240 if (s == NULL || strlen(s) == 0)
241 s = "libodbc.so";
242 strcpy(gProxyHandle.dmLibName, s);
244 gProxyHandle.dmHandle = wine_dlopen(gProxyHandle.dmLibName, RTLD_LAZY, error, sizeof(error));
246 if (gProxyHandle.dmHandle == NULL) /* fail to load unixODBC driver manager */
248 WARN("failed to open library %s: %s\n", gProxyHandle.dmLibName, error);
249 gProxyHandle.dmLibName[0] = '\0';
250 gProxyHandle.nErrorType = ERROR_LIBRARY_NOT_FOUND;
251 return FALSE;
253 else
255 gProxyHandle.nErrorType = ERROR_FREE;
256 return TRUE;
261 /***********************************************************************
262 * ODBC_LoadDMFunctions [Internal] Populate function table.
264 * PARAMS
266 * RETURNS
267 * Success: TRUE
268 * Failure: FALSE
271 static BOOL ODBC_LoadDMFunctions(void)
273 int i;
274 char error[256];
276 if (gProxyHandle.dmHandle == NULL)
277 return FALSE;
279 for ( i = 0; i < NUM_SQLFUNC; i ++ )
281 gProxyHandle.functions[i] = template_func[i];
282 gProxyHandle.functions[i].func = wine_dlsym(gProxyHandle.dmHandle,
283 gProxyHandle.functions[i].name, error, sizeof(error));
285 if (error[0])
287 ERR("Failed to load function %s\n",gProxyHandle.functions[i].name);
288 gProxyHandle.functions[i].func = SQLDummyFunc;
292 gProxyHandle.bFunctionReady = TRUE;
294 return TRUE;
298 /*************************************************************************
299 * SQLAllocConnect [ODBC32.001]
301 SQLRETURN WINAPI SQLAllocConnect(SQLHENV EnvironmentHandle, SQLHDBC *ConnectionHandle)
303 SQLRETURN ret;
304 TRACE("Env=%lx\n",EnvironmentHandle);
306 if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
308 *ConnectionHandle = SQL_NULL_HDBC;
309 TRACE("Not ready\n");
310 return SQL_ERROR;
313 assert(gProxyHandle.functions[SQLAPI_INDEX_SQLALLOCCONNECT].func);
314 ret=(gProxyHandle.functions[SQLAPI_INDEX_SQLALLOCCONNECT].func)
315 (EnvironmentHandle, ConnectionHandle);
316 TRACE("Returns ret=%d, Handle %lx\n",ret, *ConnectionHandle);
317 return ret;
321 /*************************************************************************
322 * SQLAllocEnv [ODBC32.002]
324 SQLRETURN WINAPI SQLAllocEnv(SQLHENV *EnvironmentHandle)
326 SQLRETURN ret;
327 TRACE("\n");
329 if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
331 *EnvironmentHandle = SQL_NULL_HENV;
332 TRACE("Not ready\n");
333 return SQL_ERROR;
336 assert(gProxyHandle.functions[SQLAPI_INDEX_SQLALLOCENV].func);
337 ret=(gProxyHandle.functions[SQLAPI_INDEX_SQLALLOCENV].func) (EnvironmentHandle);
338 TRACE("Returns ret=%d, Env=%lx\n",ret, *EnvironmentHandle);
339 return ret;
343 /*************************************************************************
344 * SQLAllocHandle [ODBC32.024]
346 SQLRETURN WINAPI SQLAllocHandle(SQLSMALLINT HandleType, SQLHANDLE InputHandle, SQLHANDLE *OutputHandle)
348 SQLRETURN ret;
349 TRACE("(Type=%d, Handle=%lx)\n",HandleType,InputHandle);
351 if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
353 if (gProxyHandle.nErrorType == ERROR_LIBRARY_NOT_FOUND)
354 WARN("ProxyODBC: Can not load ODBC driver manager library.\n");
356 if (HandleType == SQL_HANDLE_ENV)
357 *OutputHandle = SQL_NULL_HENV;
358 else if (HandleType == SQL_HANDLE_DBC)
359 *OutputHandle = SQL_NULL_HDBC;
360 else if (HandleType == SQL_HANDLE_STMT)
361 *OutputHandle = SQL_NULL_HSTMT;
362 else if (HandleType == SQL_HANDLE_DESC)
363 *OutputHandle = SQL_NULL_HDESC;
365 TRACE ("Not ready\n");
366 return SQL_ERROR;
369 assert(gProxyHandle.functions[SQLAPI_INDEX_SQLALLOCHANDLE].func);
370 ret=(gProxyHandle.functions[SQLAPI_INDEX_SQLALLOCHANDLE].func)
371 (HandleType, InputHandle, OutputHandle);
372 TRACE("Returns ret=%d, Handle=%lx\n",ret, *OutputHandle);
373 return ret;
377 /*************************************************************************
378 * SQLAllocStmt [ODBC32.003]
380 SQLRETURN WINAPI SQLAllocStmt(SQLHDBC ConnectionHandle, SQLHSTMT *StatementHandle)
382 SQLRETURN ret;
384 TRACE("(Connection=%lx)\n",ConnectionHandle);
386 if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
388 *StatementHandle = SQL_NULL_HSTMT;
389 TRACE ("Not ready\n");
390 return SQL_ERROR;
393 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLALLOCSTMT].func);
394 ret=(gProxyHandle.functions[SQLAPI_INDEX_SQLALLOCSTMT].func)
395 (ConnectionHandle, StatementHandle);
396 TRACE ("Returns ret=%d, Handle=%lx\n", ret, *StatementHandle);
397 return ret;
401 /*************************************************************************
402 * SQLAllocHandleStd [ODBC32.077]
404 SQLRETURN WINAPI SQLAllocHandleStd( SQLSMALLINT HandleType,
405 SQLHANDLE InputHandle, SQLHANDLE *OutputHandle)
407 TRACE("ProxyODBC: SQLAllocHandelStd.\n");
409 if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
411 if (gProxyHandle.nErrorType == ERROR_LIBRARY_NOT_FOUND)
412 WARN("ProxyODBC: Can not load ODBC driver manager library.\n");
414 if (HandleType == SQL_HANDLE_ENV)
415 *OutputHandle = SQL_NULL_HENV;
416 else if (HandleType == SQL_HANDLE_DBC)
417 *OutputHandle = SQL_NULL_HDBC;
418 else if (HandleType == SQL_HANDLE_STMT)
419 *OutputHandle = SQL_NULL_HSTMT;
420 else if (HandleType == SQL_HANDLE_DESC)
421 *OutputHandle = SQL_NULL_HDESC;
423 return SQL_ERROR;
426 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLALLOCHANDLESTD].func);
427 return (gProxyHandle.functions[SQLAPI_INDEX_SQLALLOCHANDLESTD].func)
428 (HandleType, InputHandle, OutputHandle);
432 /*************************************************************************
433 * SQLBindCol [ODBC32.004]
435 SQLRETURN WINAPI SQLBindCol(SQLHSTMT StatementHandle,
436 SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType,
437 SQLPOINTER TargetValue, SQLINTEGER BufferLength,
438 SQLINTEGER *StrLen_or_Ind)
440 TRACE("\n");
442 if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
444 TRACE ("Not ready\n");
445 return SQL_ERROR;
448 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLBINDCOL].func);
449 return (gProxyHandle.functions[SQLAPI_INDEX_SQLBINDCOL].func)
450 (StatementHandle, ColumnNumber, TargetType,
451 TargetValue, BufferLength, StrLen_or_Ind);
455 /*************************************************************************
456 * SQLBindParam [ODBC32.025]
458 SQLRETURN WINAPI SQLBindParam(SQLHSTMT StatementHandle,
459 SQLUSMALLINT ParameterNumber, SQLSMALLINT ValueType,
460 SQLSMALLINT ParameterType, SQLUINTEGER LengthPrecision,
461 SQLSMALLINT ParameterScale, SQLPOINTER ParameterValue,
462 SQLINTEGER *StrLen_or_Ind)
464 TRACE("\n");
466 CHECK_READY_AND_dmHandle();
468 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLBINDPARAM].func);
469 return (gProxyHandle.functions[SQLAPI_INDEX_SQLBINDPARAM].func)
470 (StatementHandle, ParameterNumber, ValueType,
471 ParameterScale, ParameterValue, StrLen_or_Ind);
475 /*************************************************************************
476 * SQLCancel [ODBC32.005]
478 SQLRETURN WINAPI SQLCancel(SQLHSTMT StatementHandle)
480 TRACE("\n");
482 CHECK_READY_AND_dmHandle();
484 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLCANCEL].func);
485 return (gProxyHandle.functions[SQLAPI_INDEX_SQLCANCEL].func) (StatementHandle);
489 /*************************************************************************
490 * SQLCloseCursor [ODBC32.026]
492 SQLRETURN WINAPI SQLCloseCursor(SQLHSTMT StatementHandle)
494 SQLRETURN ret;
495 TRACE("(Handle=%lx)\n",StatementHandle);
497 CHECK_READY_AND_dmHandle();
499 assert(gProxyHandle.functions[SQLAPI_INDEX_SQLCLOSECURSOR].func);
500 ret=(gProxyHandle.functions[SQLAPI_INDEX_SQLCLOSECURSOR].func) (StatementHandle);
501 TRACE("returns %d\n",ret);
502 return ret;
506 /*************************************************************************
507 * SQLColAttribute [ODBC32.027]
509 SQLRETURN WINAPI SQLColAttribute (SQLHSTMT StatementHandle,
510 SQLUSMALLINT ColumnNumber, SQLUSMALLINT FieldIdentifier,
511 SQLPOINTER CharacterAttribute, SQLSMALLINT BufferLength,
512 SQLSMALLINT *StringLength, SQLPOINTER NumericAttribute)
514 TRACE("\n");
516 CHECK_READY_AND_dmHandle();
518 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLCOLATTRIBUTE].func);
519 return (gProxyHandle.functions[SQLAPI_INDEX_SQLCOLATTRIBUTE].func)
520 (StatementHandle, ColumnNumber, FieldIdentifier,
521 CharacterAttribute, BufferLength, StringLength, NumericAttribute);
525 /*************************************************************************
526 * SQLColumns [ODBC32.040]
528 SQLRETURN WINAPI SQLColumns(SQLHSTMT StatementHandle,
529 SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
530 SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
531 SQLCHAR *TableName, SQLSMALLINT NameLength3,
532 SQLCHAR *ColumnName, SQLSMALLINT NameLength4)
534 TRACE("\n");
536 CHECK_READY_AND_dmHandle();
538 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLCOLUMNS].func);
539 return (gProxyHandle.functions[SQLAPI_INDEX_SQLCOLUMNS].func)
540 (StatementHandle, CatalogName, NameLength1,
541 SchemaName, NameLength2, TableName, NameLength3, ColumnName, NameLength4);
545 /*************************************************************************
546 * SQLConnect [ODBC32.007]
548 SQLRETURN WINAPI SQLConnect(SQLHDBC ConnectionHandle,
549 SQLCHAR *ServerName, SQLSMALLINT NameLength1,
550 SQLCHAR *UserName, SQLSMALLINT NameLength2,
551 SQLCHAR *Authentication, SQLSMALLINT NameLength3)
553 SQLRETURN ret;
554 TRACE("(Server=%.*s)\n",NameLength1, ServerName);
556 CHECK_READY_AND_dmHandle();
558 strcpy(gProxyHandle.ServerName, ServerName);
559 strcpy(gProxyHandle.UserName, UserName);
561 assert(gProxyHandle.functions[SQLAPI_INDEX_SQLCONNECT].func);
562 ret=(gProxyHandle.functions[SQLAPI_INDEX_SQLCONNECT].func)
563 (ConnectionHandle, ServerName, NameLength1,
564 UserName, NameLength2, Authentication, NameLength3);
566 TRACE("returns %d\n",ret);
567 return ret;
571 /*************************************************************************
572 * SQLCopyDesc [ODBC32.028]
574 SQLRETURN WINAPI SQLCopyDesc(SQLHDESC SourceDescHandle, SQLHDESC TargetDescHandle)
576 TRACE("\n");
578 CHECK_READY_AND_dmHandle();
580 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLCOPYDESC].func);
581 return (gProxyHandle.functions[SQLAPI_INDEX_SQLCOPYDESC].func)
582 (SourceDescHandle, TargetDescHandle);
586 /*************************************************************************
587 * SQLDataSources [ODBC32.057]
589 SQLRETURN WINAPI SQLDataSources(SQLHENV EnvironmentHandle,
590 SQLUSMALLINT Direction, SQLCHAR *ServerName,
591 SQLSMALLINT BufferLength1, SQLSMALLINT *NameLength1,
592 SQLCHAR *Description, SQLSMALLINT BufferLength2,
593 SQLSMALLINT *NameLength2)
595 SQLRETURN ret;
597 TRACE("EnvironmentHandle = %p\n", (LPVOID)EnvironmentHandle);
599 if (!gProxyHandle.bFunctionReady || gProxyHandle.dmHandle == NULL)
601 ERR("Error: empty dm handle (gProxyHandle.dmHandle == NULL)\n");
602 return SQL_ERROR;
605 assert(gProxyHandle.functions[SQLAPI_INDEX_SQLDATASOURCES].func);
606 ret = (gProxyHandle.functions[SQLAPI_INDEX_SQLDATASOURCES].func)
607 (EnvironmentHandle, Direction, ServerName,
608 BufferLength1, NameLength1, Description, BufferLength2, NameLength2);
610 if (TRACE_ON(odbc))
612 TRACE("returns: %d \t", ret);
613 if (*NameLength1 > 0)
614 DPRINTF("DataSource = %s,", ServerName);
615 if (*NameLength2 > 0)
616 DPRINTF(" Description = %s", Description);
617 DPRINTF("\n");
620 return ret;
624 /*************************************************************************
625 * SQLDescribeCol [ODBC32.008]
627 SQLRETURN WINAPI SQLDescribeCol(SQLHSTMT StatementHandle,
628 SQLUSMALLINT ColumnNumber, SQLCHAR *ColumnName,
629 SQLSMALLINT BufferLength, SQLSMALLINT *NameLength,
630 SQLSMALLINT *DataType, SQLUINTEGER *ColumnSize,
631 SQLSMALLINT *DecimalDigits, SQLSMALLINT *Nullable)
633 TRACE("\n");
635 CHECK_READY_AND_dmHandle();
637 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLDESCRIBECOL].func);
638 return (gProxyHandle.functions[SQLAPI_INDEX_SQLDESCRIBECOL].func)
639 (StatementHandle, ColumnNumber, ColumnName,
640 BufferLength, NameLength, DataType, ColumnSize, DecimalDigits, Nullable);
644 /*************************************************************************
645 * SQLDisconnect [ODBC32.009]
647 SQLRETURN WINAPI SQLDisconnect(SQLHDBC ConnectionHandle)
649 SQLRETURN ret;
650 TRACE("(Handle=%lx)\n", ConnectionHandle);
652 CHECK_READY_AND_dmHandle();
654 gProxyHandle.ServerName[0] = '\0';
655 gProxyHandle.UserName[0] = '\0';
657 assert(gProxyHandle.functions[SQLAPI_INDEX_SQLDISCONNECT].func);
658 ret = (gProxyHandle.functions[SQLAPI_INDEX_SQLDISCONNECT].func) (ConnectionHandle);
659 TRACE("returns %d\n",ret);
660 return ret;
664 /*************************************************************************
665 * SQLEndTran [ODBC32.029]
667 SQLRETURN WINAPI SQLEndTran(SQLSMALLINT HandleType, SQLHANDLE Handle, SQLSMALLINT CompletionType)
669 TRACE("\n");
671 CHECK_READY_AND_dmHandle();
673 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLENDTRAN].func);
674 return (gProxyHandle.functions[SQLAPI_INDEX_SQLENDTRAN].func) (HandleType, Handle, CompletionType);
678 /*************************************************************************
679 * SQLError [ODBC32.010]
681 SQLRETURN WINAPI SQLError(SQLHENV EnvironmentHandle,
682 SQLHDBC ConnectionHandle, SQLHSTMT StatementHandle,
683 SQLCHAR *Sqlstate, SQLINTEGER *NativeError,
684 SQLCHAR *MessageText, SQLSMALLINT BufferLength,
685 SQLSMALLINT *TextLength)
687 TRACE("\n");
689 CHECK_READY_AND_dmHandle();
691 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLERROR].func);
692 return (gProxyHandle.functions[SQLAPI_INDEX_SQLERROR].func)
693 (EnvironmentHandle, ConnectionHandle, StatementHandle,
694 Sqlstate, NativeError, MessageText, BufferLength, TextLength);
698 /*************************************************************************
699 * SQLExecDirect [ODBC32.011]
701 SQLRETURN WINAPI SQLExecDirect(SQLHSTMT StatementHandle, SQLCHAR *StatementText, SQLINTEGER TextLength)
703 TRACE("\n");
705 CHECK_READY_AND_dmHandle();
707 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLEXECDIRECT].func);
708 return (gProxyHandle.functions[SQLAPI_INDEX_SQLEXECDIRECT].func)
709 (StatementHandle, StatementText, TextLength);
713 /*************************************************************************
714 * SQLExecute [ODBC32.012]
716 SQLRETURN WINAPI SQLExecute(SQLHSTMT StatementHandle)
718 TRACE("\n");
720 CHECK_READY_AND_dmHandle();
722 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLEXECUTE].func);
723 return (gProxyHandle.functions[SQLAPI_INDEX_SQLEXECUTE].func) (StatementHandle);
727 /*************************************************************************
728 * SQLFetch [ODBC32.013]
730 SQLRETURN WINAPI SQLFetch(SQLHSTMT StatementHandle)
732 TRACE("\n");
734 CHECK_READY_AND_dmHandle();
736 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLFETCH].func);
737 return (gProxyHandle.functions[SQLAPI_INDEX_SQLFETCH].func) (StatementHandle);
741 /*************************************************************************
742 * SQLFetchScroll [ODBC32.030]
744 SQLRETURN WINAPI SQLFetchScroll(SQLHSTMT StatementHandle, SQLSMALLINT FetchOrientation, SQLINTEGER FetchOffset)
746 TRACE("\n");
748 CHECK_dmHandle();
750 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLFETCHSCROLL].func);
751 return (gProxyHandle.functions[SQLAPI_INDEX_SQLFETCHSCROLL].func)
752 (StatementHandle, FetchOrientation, FetchOffset);
756 /*************************************************************************
757 * SQLFreeConnect [ODBC32.014]
759 SQLRETURN WINAPI SQLFreeConnect(SQLHDBC ConnectionHandle)
761 SQLRETURN ret;
762 TRACE("(Handle=%lx)\n",ConnectionHandle);
764 CHECK_dmHandle();
766 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLFREECONNECT].func);
767 ret=(gProxyHandle.functions[SQLAPI_INDEX_SQLFREECONNECT].func) (ConnectionHandle);
768 TRACE("Returns %d\n",ret);
769 return ret;
773 /*************************************************************************
774 * SQLFreeEnv [ODBC32.015]
776 SQLRETURN WINAPI SQLFreeEnv(SQLHENV EnvironmentHandle)
778 SQLRETURN ret;
779 TRACE("(Env=%lx)\n",EnvironmentHandle);
781 CHECK_dmHandle();
783 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLFREEENV].func);
784 ret = (gProxyHandle.functions[SQLAPI_INDEX_SQLFREEENV].func) (EnvironmentHandle);
785 TRACE("Returns %d\n",ret);
786 return ret;
790 /*************************************************************************
791 * SQLFreeHandle [ODBC32.031]
793 SQLRETURN WINAPI SQLFreeHandle(SQLSMALLINT HandleType, SQLHANDLE Handle)
795 SQLRETURN ret;
796 TRACE("(Type=%d, Handle=%lx)\n",HandleType,Handle);
798 CHECK_dmHandle();
800 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLFREEHANDLE].func);
801 ret = (gProxyHandle.functions[SQLAPI_INDEX_SQLFREEHANDLE].func)
802 (HandleType, Handle);
803 TRACE ("Returns %d\n",ret);
804 return ret;
808 /*************************************************************************
809 * SQLFreeStmt [ODBC32.016]
811 SQLRETURN WINAPI SQLFreeStmt(SQLHSTMT StatementHandle, SQLUSMALLINT Option)
813 SQLRETURN ret;
814 TRACE("(Handle %lx, Option=%d)\n",StatementHandle, Option);
816 CHECK_dmHandle();
818 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLFREESTMT].func);
819 ret=(gProxyHandle.functions[SQLAPI_INDEX_SQLFREESTMT].func)
820 (StatementHandle, Option);
821 TRACE("Returns %d\n",ret);
822 return ret;
826 /*************************************************************************
827 * SQLGetConnectAttr [ODBC32.032]
829 SQLRETURN WINAPI SQLGetConnectAttr(SQLHDBC ConnectionHandle,
830 SQLINTEGER Attribute, SQLPOINTER Value,
831 SQLINTEGER BufferLength, SQLINTEGER *StringLength)
833 TRACE("\n");
835 CHECK_dmHandle();
837 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLGETCONNECTATTR].func);
838 return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETCONNECTATTR].func)
839 (ConnectionHandle, Attribute, Value,
840 BufferLength, StringLength);
844 /*************************************************************************
845 * SQLGetConnectOption [ODBC32.042]
847 SQLRETURN WINAPI SQLGetConnectOption(SQLHDBC ConnectionHandle, SQLUSMALLINT Option, SQLPOINTER Value)
849 TRACE("\n");
851 CHECK_dmHandle();
853 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLGETCONNECTOPTION].func);
854 return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETCONNECTOPTION].func)
855 (ConnectionHandle, Option, Value);
859 /*************************************************************************
860 * SQLGetCursorName [ODBC32.017]
862 SQLRETURN WINAPI SQLGetCursorName(SQLHSTMT StatementHandle,
863 SQLCHAR *CursorName, SQLSMALLINT BufferLength,
864 SQLSMALLINT *NameLength)
866 TRACE("\n");
868 CHECK_dmHandle();
870 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLGETCURSORNAME].func);
871 return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETCURSORNAME].func)
872 (StatementHandle, CursorName, BufferLength, NameLength);
876 /*************************************************************************
877 * SQLGetData [ODBC32.043]
879 SQLRETURN WINAPI SQLGetData(SQLHSTMT StatementHandle,
880 SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType,
881 SQLPOINTER TargetValue, SQLINTEGER BufferLength,
882 SQLINTEGER *StrLen_or_Ind)
884 TRACE("\n");
886 CHECK_dmHandle();
888 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLGETDATA].func);
889 return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETDATA].func)
890 (StatementHandle, ColumnNumber, TargetType,
891 TargetValue, BufferLength, StrLen_or_Ind);
895 /*************************************************************************
896 * SQLGetDescField [ODBC32.033]
898 SQLRETURN WINAPI SQLGetDescField(SQLHDESC DescriptorHandle,
899 SQLSMALLINT RecNumber, SQLSMALLINT FieldIdentifier,
900 SQLPOINTER Value, SQLINTEGER BufferLength,
901 SQLINTEGER *StringLength)
903 TRACE("\n");
905 CHECK_dmHandle();
907 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLGETDESCFIELD].func);
908 return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETDESCFIELD].func)
909 (DescriptorHandle, RecNumber, FieldIdentifier,
910 Value, BufferLength, StringLength);
914 /*************************************************************************
915 * SQLGetDescRec [ODBC32.034]
917 SQLRETURN WINAPI SQLGetDescRec(SQLHDESC DescriptorHandle,
918 SQLSMALLINT RecNumber, SQLCHAR *Name,
919 SQLSMALLINT BufferLength, SQLSMALLINT *StringLength,
920 SQLSMALLINT *Type, SQLSMALLINT *SubType,
921 SQLINTEGER *Length, SQLSMALLINT *Precision,
922 SQLSMALLINT *Scale, SQLSMALLINT *Nullable)
924 TRACE("\n");
926 CHECK_dmHandle();
928 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLGETDESCREC].func);
929 return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETDESCREC].func)
930 (DescriptorHandle, RecNumber, Name, BufferLength,
931 StringLength, Type, SubType, Length, Precision, Scale, Nullable);
935 /*************************************************************************
936 * SQLGetDiagField [ODBC32.035]
938 SQLRETURN WINAPI SQLGetDiagField(SQLSMALLINT HandleType, SQLHANDLE Handle,
939 SQLSMALLINT RecNumber, SQLSMALLINT DiagIdentifier,
940 SQLPOINTER DiagInfo, SQLSMALLINT BufferLength,
941 SQLSMALLINT *StringLength)
943 TRACE("\n");
945 CHECK_dmHandle();
947 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLGETDIAGFIELD].func);
948 return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETDIAGFIELD].func)
949 (HandleType, Handle, RecNumber, DiagIdentifier,
950 DiagInfo, BufferLength, StringLength);
954 /*************************************************************************
955 * SQLGetDiagRec [ODBC32.036]
957 SQLRETURN WINAPI SQLGetDiagRec(SQLSMALLINT HandleType, SQLHANDLE Handle,
958 SQLSMALLINT RecNumber, SQLCHAR *Sqlstate,
959 SQLINTEGER *NativeError, SQLCHAR *MessageText,
960 SQLSMALLINT BufferLength, SQLSMALLINT *TextLength)
962 TRACE("\n");
964 CHECK_dmHandle();
966 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLGETDIAGREC].func);
967 return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETDIAGREC].func)
968 (HandleType, Handle, RecNumber, Sqlstate, NativeError,
969 MessageText, BufferLength, TextLength);
973 /*************************************************************************
974 * SQLGetEnvAttr [ODBC32.037]
976 SQLRETURN WINAPI SQLGetEnvAttr(SQLHENV EnvironmentHandle,
977 SQLINTEGER Attribute, SQLPOINTER Value,
978 SQLINTEGER BufferLength, SQLINTEGER *StringLength)
980 TRACE("\n");
982 CHECK_dmHandle();
984 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLGETENVATTR].func);
985 return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETENVATTR].func)
986 (EnvironmentHandle, Attribute, Value, BufferLength, StringLength);
990 /*************************************************************************
991 * SQLGetFunctions [ODBC32.044]
993 SQLRETURN WINAPI SQLGetFunctions(SQLHDBC ConnectionHandle, SQLUSMALLINT FunctionId, SQLUSMALLINT *Supported)
995 TRACE("\n");
997 CHECK_dmHandle();
999 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLGETFUNCTIONS].func);
1000 return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETFUNCTIONS].func)
1001 (ConnectionHandle, FunctionId, Supported);
1005 /*************************************************************************
1006 * SQLGetInfo [ODBC32.045]
1008 SQLRETURN WINAPI SQLGetInfo(SQLHDBC ConnectionHandle,
1009 SQLUSMALLINT InfoType, SQLPOINTER InfoValue,
1010 SQLSMALLINT BufferLength, SQLSMALLINT *StringLength)
1012 TRACE("\n");
1014 CHECK_dmHandle();
1016 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLGETINFO].func);
1017 return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETINFO].func)
1018 (ConnectionHandle, InfoType, InfoValue, BufferLength, StringLength);
1022 /*************************************************************************
1023 * SQLGetStmtAttr [ODBC32.038]
1025 SQLRETURN WINAPI SQLGetStmtAttr(SQLHSTMT StatementHandle,
1026 SQLINTEGER Attribute, SQLPOINTER Value,
1027 SQLINTEGER BufferLength, SQLINTEGER *StringLength)
1029 TRACE("\n");
1031 CHECK_dmHandle();
1033 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLGETSTMTATTR].func);
1034 return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETSTMTATTR].func)
1035 (StatementHandle, Attribute, Value, BufferLength, StringLength);
1039 /*************************************************************************
1040 * SQLGetStmtOption [ODBC32.046]
1042 SQLRETURN WINAPI SQLGetStmtOption(SQLHSTMT StatementHandle, SQLUSMALLINT Option, SQLPOINTER Value)
1044 TRACE("\n");
1046 CHECK_dmHandle();
1048 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLGETSTMTOPTION].func);
1049 return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETSTMTOPTION].func)
1050 (StatementHandle, Option, Value);
1054 /*************************************************************************
1055 * SQLGetTypeInfo [ODBC32.047]
1057 SQLRETURN WINAPI SQLGetTypeInfo(SQLHSTMT StatementHandle, SQLSMALLINT DataType)
1059 TRACE("\n");
1061 CHECK_dmHandle();
1063 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLGETTYPEINFO].func);
1064 return (gProxyHandle.functions[SQLAPI_INDEX_SQLGETTYPEINFO].func)
1065 (StatementHandle, DataType);
1069 /*************************************************************************
1070 * SQLNumResultCols [ODBC32.018]
1072 SQLRETURN WINAPI SQLNumResultCols(SQLHSTMT StatementHandle, SQLSMALLINT *ColumnCount)
1074 TRACE("\n");
1076 CHECK_dmHandle();
1078 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLNUMRESULTCOLS].func);
1079 return (gProxyHandle.functions[SQLAPI_INDEX_SQLNUMRESULTCOLS].func)
1080 (StatementHandle, ColumnCount);
1084 /*************************************************************************
1085 * SQLParamData [ODBC32.048]
1087 SQLRETURN WINAPI SQLParamData(SQLHSTMT StatementHandle, SQLPOINTER *Value)
1089 TRACE("\n");
1091 CHECK_dmHandle();
1093 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLPARAMDATA].func);
1094 return (gProxyHandle.functions[SQLAPI_INDEX_SQLPARAMDATA].func)
1095 (StatementHandle, Value);
1099 /*************************************************************************
1100 * SQLPrepare [ODBC32.019]
1102 SQLRETURN WINAPI SQLPrepare(SQLHSTMT StatementHandle, SQLCHAR *StatementText, SQLINTEGER TextLength)
1104 TRACE("\n");
1106 CHECK_dmHandle();
1108 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLPREPARE].func);
1109 return (gProxyHandle.functions[SQLAPI_INDEX_SQLPREPARE].func)
1110 (StatementHandle, StatementText, TextLength);
1114 /*************************************************************************
1115 * SQLPutData [ODBC32.049]
1117 SQLRETURN WINAPI SQLPutData(SQLHSTMT StatementHandle, SQLPOINTER Data, SQLINTEGER StrLen_or_Ind)
1119 TRACE("\n");
1121 CHECK_dmHandle();
1123 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLPUTDATA].func);
1124 return (gProxyHandle.functions[SQLAPI_INDEX_SQLPUTDATA].func)
1125 (StatementHandle, Data, StrLen_or_Ind);
1129 /*************************************************************************
1130 * SQLRowCount [ODBC32.020]
1132 SQLRETURN WINAPI SQLRowCount(SQLHSTMT StatementHandle, SQLINTEGER *RowCount)
1134 TRACE("\n");
1136 CHECK_dmHandle();
1138 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLROWCOUNT].func);
1139 return (gProxyHandle.functions[SQLAPI_INDEX_SQLROWCOUNT].func)
1140 (StatementHandle, RowCount);
1144 /*************************************************************************
1145 * SQLSetConnectAttr [ODBC32.039]
1147 SQLRETURN WINAPI SQLSetConnectAttr(SQLHDBC ConnectionHandle, SQLINTEGER Attribute,
1148 SQLPOINTER Value, SQLINTEGER StringLength)
1150 TRACE("\n");
1152 CHECK_dmHandle();
1154 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLSETCONNECTATTR].func);
1155 return (gProxyHandle.functions[SQLAPI_INDEX_SQLSETCONNECTATTR].func)
1156 (ConnectionHandle, Attribute, Value, StringLength);
1160 /*************************************************************************
1161 * SQLSetConnectOption [ODBC32.050]
1163 SQLRETURN WINAPI SQLSetConnectOption(SQLHDBC ConnectionHandle, SQLUSMALLINT Option, SQLUINTEGER Value)
1165 TRACE("\n");
1167 CHECK_dmHandle();
1169 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLSETCONNECTOPTION].func);
1170 return (gProxyHandle.functions[SQLAPI_INDEX_SQLSETCONNECTOPTION].func)
1171 (ConnectionHandle, Option, Value);
1175 /*************************************************************************
1176 * SQLSetCursorName [ODBC32.021]
1178 SQLRETURN WINAPI SQLSetCursorName(SQLHSTMT StatementHandle, SQLCHAR *CursorName, SQLSMALLINT NameLength)
1180 TRACE("\n");
1182 CHECK_dmHandle();
1184 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLSETCURSORNAME].func);
1185 return (gProxyHandle.functions[SQLAPI_INDEX_SQLSETCURSORNAME].func)
1186 (StatementHandle, CursorName, NameLength);
1190 /*************************************************************************
1191 * SQLSetDescField [ODBC32.073]
1193 SQLRETURN WINAPI SQLSetDescField(SQLHDESC DescriptorHandle,
1194 SQLSMALLINT RecNumber, SQLSMALLINT FieldIdentifier,
1195 SQLPOINTER Value, SQLINTEGER BufferLength)
1197 TRACE("\n");
1199 CHECK_dmHandle();
1201 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLSETDESCFIELD].func);
1202 return (gProxyHandle.functions[SQLAPI_INDEX_SQLSETDESCFIELD].func)
1203 (DescriptorHandle, RecNumber, FieldIdentifier, Value, BufferLength);
1207 /*************************************************************************
1208 * SQLSetDescRec [ODBC32.074]
1210 SQLRETURN WINAPI SQLSetDescRec(SQLHDESC DescriptorHandle,
1211 SQLSMALLINT RecNumber, SQLSMALLINT Type,
1212 SQLSMALLINT SubType, SQLINTEGER Length,
1213 SQLSMALLINT Precision, SQLSMALLINT Scale,
1214 SQLPOINTER Data, SQLINTEGER *StringLength,
1215 SQLINTEGER *Indicator)
1217 TRACE("\n");
1219 CHECK_dmHandle();
1221 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLSETDESCREC].func);
1222 return (gProxyHandle.functions[SQLAPI_INDEX_SQLSETDESCREC].func)
1223 (DescriptorHandle, RecNumber, Type, SubType, Length,
1224 Precision, Scale, Data, StringLength, Indicator);
1228 /*************************************************************************
1229 * SQLSetEnvAttr [ODBC32.075]
1231 SQLRETURN WINAPI SQLSetEnvAttr(SQLHENV EnvironmentHandle,
1232 SQLINTEGER Attribute, SQLPOINTER Value,
1233 SQLINTEGER StringLength)
1235 TRACE("\n");
1237 CHECK_dmHandle();
1239 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLSETENVATTR].func);
1240 return (gProxyHandle.functions[SQLAPI_INDEX_SQLSETENVATTR].func)
1241 (EnvironmentHandle, Attribute, Value, StringLength);
1245 /*************************************************************************
1246 * SQLSetParam [ODBC32.022]
1248 SQLRETURN WINAPI SQLSetParam(SQLHSTMT StatementHandle,
1249 SQLUSMALLINT ParameterNumber, SQLSMALLINT ValueType,
1250 SQLSMALLINT ParameterType, SQLUINTEGER LengthPrecision,
1251 SQLSMALLINT ParameterScale, SQLPOINTER ParameterValue,
1252 SQLINTEGER *StrLen_or_Ind)
1254 TRACE("\n");
1256 CHECK_dmHandle();
1258 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLSETPARAM].func);
1259 return (gProxyHandle.functions[SQLAPI_INDEX_SQLSETPARAM].func)
1260 (StatementHandle, ParameterNumber, ValueType, ParameterType, LengthPrecision,
1261 ParameterScale, ParameterValue, StrLen_or_Ind);
1265 /*************************************************************************
1266 * SQLSetStmtAttr [ODBC32.076]
1268 SQLRETURN WINAPI SQLSetStmtAttr(SQLHSTMT StatementHandle,
1269 SQLINTEGER Attribute, SQLPOINTER Value,
1270 SQLINTEGER StringLength)
1272 TRACE("\n");
1274 CHECK_dmHandle();
1276 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLSETSTMTATTR].func);
1277 return (gProxyHandle.functions[SQLAPI_INDEX_SQLSETSTMTATTR].func)
1278 (StatementHandle, Attribute, Value, StringLength);
1282 /*************************************************************************
1283 * SQLSetStmtOption [ODBC32.051]
1285 SQLRETURN WINAPI SQLSetStmtOption(SQLHSTMT StatementHandle, SQLUSMALLINT Option, SQLUINTEGER Value)
1287 TRACE("\n");
1289 CHECK_dmHandle();
1291 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLSETSTMTOPTION].func);
1292 return (gProxyHandle.functions[SQLAPI_INDEX_SQLSETSTMTOPTION].func)
1293 (StatementHandle, Option, Value);
1297 /*************************************************************************
1298 * SQLSpecialColumns [ODBC32.052]
1300 SQLRETURN WINAPI SQLSpecialColumns(SQLHSTMT StatementHandle,
1301 SQLUSMALLINT IdentifierType, SQLCHAR *CatalogName,
1302 SQLSMALLINT NameLength1, SQLCHAR *SchemaName,
1303 SQLSMALLINT NameLength2, SQLCHAR *TableName,
1304 SQLSMALLINT NameLength3, SQLUSMALLINT Scope,
1305 SQLUSMALLINT Nullable)
1308 CHECK_dmHandle();
1310 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLSPECIALCOLUMNS].func);
1311 return (gProxyHandle.functions[SQLAPI_INDEX_SQLSPECIALCOLUMNS].func)
1312 (StatementHandle, IdentifierType, CatalogName, NameLength1, SchemaName,
1313 NameLength2, TableName, NameLength3, Scope, Nullable);
1317 /*************************************************************************
1318 * SQLStatistics [ODBC32.053]
1320 SQLRETURN WINAPI SQLStatistics(SQLHSTMT StatementHandle,
1321 SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
1322 SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
1323 SQLCHAR *TableName, SQLSMALLINT NameLength3,
1324 SQLUSMALLINT Unique, SQLUSMALLINT Reserved)
1326 TRACE("\n");
1328 CHECK_dmHandle();
1330 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLSTATISTICS].func);
1331 return (gProxyHandle.functions[SQLAPI_INDEX_SQLSTATISTICS].func)
1332 (StatementHandle, CatalogName, NameLength1, SchemaName, NameLength2,
1333 TableName, NameLength3, Unique, Reserved);
1337 /*************************************************************************
1338 * SQLTables [ODBC32.054]
1340 SQLRETURN WINAPI SQLTables(SQLHSTMT StatementHandle,
1341 SQLCHAR *CatalogName, SQLSMALLINT NameLength1,
1342 SQLCHAR *SchemaName, SQLSMALLINT NameLength2,
1343 SQLCHAR *TableName, SQLSMALLINT NameLength3,
1344 SQLCHAR *TableType, SQLSMALLINT NameLength4)
1346 TRACE("\n");
1348 CHECK_dmHandle();
1350 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLTABLES].func);
1351 return (gProxyHandle.functions[SQLAPI_INDEX_SQLTABLES].func)
1352 (StatementHandle, CatalogName, NameLength1,
1353 SchemaName, NameLength2, TableName, NameLength3, TableType, NameLength4);
1357 /*************************************************************************
1358 * SQLTransact [ODBC32.023]
1360 SQLRETURN WINAPI SQLTransact(SQLHENV EnvironmentHandle, SQLHDBC ConnectionHandle,
1361 SQLUSMALLINT CompletionType)
1363 TRACE("\n");
1365 CHECK_dmHandle();
1367 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLTRANSACT].func);
1368 return (gProxyHandle.functions[SQLAPI_INDEX_SQLTRANSACT].func)
1369 (EnvironmentHandle, ConnectionHandle, CompletionType);
1373 /*************************************************************************
1374 * SQLBrowseConnect [ODBC32.055]
1376 SQLRETURN WINAPI SQLBrowseConnect(
1377 SQLHDBC hdbc,
1378 SQLCHAR *szConnStrIn,
1379 SQLSMALLINT cbConnStrIn,
1380 SQLCHAR *szConnStrOut,
1381 SQLSMALLINT cbConnStrOutMax,
1382 SQLSMALLINT *pcbConnStrOut)
1384 TRACE("\n");
1386 CHECK_dmHandle();
1388 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLBROWSECONNECT].func);
1389 return (gProxyHandle.functions[SQLAPI_INDEX_SQLBROWSECONNECT].func)
1390 (hdbc, szConnStrIn, cbConnStrIn, szConnStrOut, cbConnStrOutMax, pcbConnStrOut);
1394 /*************************************************************************
1395 * SQLBulkOperations [ODBC32.078]
1397 SQLRETURN WINAPI SQLBulkOperations(
1398 SQLHSTMT StatementHandle,
1399 SQLSMALLINT Operation)
1401 TRACE("\n");
1403 CHECK_dmHandle();
1405 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLBULKOPERATIONS].func);
1406 return (gProxyHandle.functions[SQLAPI_INDEX_SQLBULKOPERATIONS].func)
1407 (StatementHandle, Operation);
1411 /*************************************************************************
1412 * SQLColAttributes [ODBC32.006]
1414 SQLRETURN WINAPI SQLColAttributes(
1415 SQLHSTMT hstmt,
1416 SQLUSMALLINT icol,
1417 SQLUSMALLINT fDescType,
1418 SQLPOINTER rgbDesc,
1419 SQLSMALLINT cbDescMax,
1420 SQLSMALLINT *pcbDesc,
1421 SQLINTEGER *pfDesc)
1423 TRACE("\n");
1425 CHECK_dmHandle();
1427 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLCOLATTRIBUTES].func);
1428 return (gProxyHandle.functions[SQLAPI_INDEX_SQLCOLATTRIBUTES].func)
1429 (hstmt, icol, fDescType, rgbDesc, cbDescMax, pcbDesc, pfDesc);
1433 /*************************************************************************
1434 * SQLColumnPrivileges [ODBC32.056]
1436 SQLRETURN WINAPI SQLColumnPrivileges(
1437 SQLHSTMT hstmt,
1438 SQLCHAR *szCatalogName,
1439 SQLSMALLINT cbCatalogName,
1440 SQLCHAR *szSchemaName,
1441 SQLSMALLINT cbSchemaName,
1442 SQLCHAR *szTableName,
1443 SQLSMALLINT cbTableName,
1444 SQLCHAR *szColumnName,
1445 SQLSMALLINT cbColumnName)
1447 TRACE("\n");
1449 CHECK_dmHandle();
1451 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLCOLUMNPRIVILEGES].func);
1452 return (gProxyHandle.functions[SQLAPI_INDEX_SQLCOLUMNPRIVILEGES].func)
1453 (hstmt, szCatalogName, cbCatalogName, szSchemaName, cbSchemaName,
1454 szTableName, cbTableName, szColumnName, cbColumnName);
1458 /*************************************************************************
1459 * SQLDescribeParam [ODBC32.058]
1461 SQLRETURN WINAPI SQLDescribeParam(
1462 SQLHSTMT hstmt,
1463 SQLUSMALLINT ipar,
1464 SQLSMALLINT *pfSqlType,
1465 SQLUINTEGER *pcbParamDef,
1466 SQLSMALLINT *pibScale,
1467 SQLSMALLINT *pfNullable)
1469 TRACE("\n");
1471 CHECK_dmHandle();
1473 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLDESCRIBEPARAM].func);
1474 return (gProxyHandle.functions[SQLAPI_INDEX_SQLDESCRIBEPARAM].func)
1475 (hstmt, ipar, pfSqlType, pcbParamDef, pibScale, pfNullable);
1479 /*************************************************************************
1480 * SQLExtendedFetch [ODBC32.059]
1482 SQLRETURN WINAPI SQLExtendedFetch(
1483 SQLHSTMT hstmt,
1484 SQLUSMALLINT fFetchType,
1485 SQLINTEGER irow,
1486 SQLUINTEGER *pcrow,
1487 SQLUSMALLINT *rgfRowStatus)
1489 TRACE("\n");
1491 CHECK_dmHandle();
1493 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLEXTENDEDFETCH].func);
1494 return (gProxyHandle.functions[SQLAPI_INDEX_SQLEXTENDEDFETCH].func)
1495 (hstmt, fFetchType, irow, pcrow, rgfRowStatus);
1499 /*************************************************************************
1500 * SQLForeignKeys [ODBC32.060]
1502 SQLRETURN WINAPI SQLForeignKeys(
1503 SQLHSTMT hstmt,
1504 SQLCHAR *szPkCatalogName,
1505 SQLSMALLINT cbPkCatalogName,
1506 SQLCHAR *szPkSchemaName,
1507 SQLSMALLINT cbPkSchemaName,
1508 SQLCHAR *szPkTableName,
1509 SQLSMALLINT cbPkTableName,
1510 SQLCHAR *szFkCatalogName,
1511 SQLSMALLINT cbFkCatalogName,
1512 SQLCHAR *szFkSchemaName,
1513 SQLSMALLINT cbFkSchemaName,
1514 SQLCHAR *szFkTableName,
1515 SQLSMALLINT cbFkTableName)
1517 TRACE("\n");
1519 CHECK_dmHandle();
1521 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLFOREIGNKEYS].func);
1522 return (gProxyHandle.functions[SQLAPI_INDEX_SQLFOREIGNKEYS].func)
1523 (hstmt, szPkCatalogName, cbPkCatalogName, szPkSchemaName, cbPkSchemaName,
1524 szPkTableName, cbPkTableName, szFkCatalogName, cbFkCatalogName, szFkSchemaName,
1525 cbFkSchemaName, szFkTableName, cbFkTableName);
1529 /*************************************************************************
1530 * SQLMoreResults [ODBC32.061]
1532 SQLRETURN WINAPI SQLMoreResults(SQLHSTMT hstmt)
1534 TRACE("\n");
1536 CHECK_dmHandle();
1538 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLMORERESULTS].func);
1539 return (gProxyHandle.functions[SQLAPI_INDEX_SQLMORERESULTS].func) (hstmt);
1543 /*************************************************************************
1544 * SQLNativeSql [ODBC32.062]
1546 SQLRETURN WINAPI SQLNativeSql(
1547 SQLHDBC hdbc,
1548 SQLCHAR *szSqlStrIn,
1549 SQLINTEGER cbSqlStrIn,
1550 SQLCHAR *szSqlStr,
1551 SQLINTEGER cbSqlStrMax,
1552 SQLINTEGER *pcbSqlStr)
1554 TRACE("\n");
1556 CHECK_dmHandle();
1558 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLNATIVESQL].func);
1559 return (gProxyHandle.functions[SQLAPI_INDEX_SQLNATIVESQL].func)
1560 (hdbc, szSqlStrIn, cbSqlStrIn, szSqlStr, cbSqlStrMax, pcbSqlStr);
1564 /*************************************************************************
1565 * SQLNumParams [ODBC32.063]
1567 SQLRETURN WINAPI SQLNumParams(
1568 SQLHSTMT hstmt,
1569 SQLSMALLINT *pcpar)
1571 TRACE("\n");
1573 CHECK_dmHandle();
1575 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLNUMPARAMS].func);
1576 return (gProxyHandle.functions[SQLAPI_INDEX_SQLNUMPARAMS].func) (hstmt, pcpar);
1580 /*************************************************************************
1581 * SQLParamOptions [ODBC32.064]
1583 SQLRETURN WINAPI SQLParamOptions(
1584 SQLHSTMT hstmt,
1585 SQLUINTEGER crow,
1586 SQLUINTEGER *pirow)
1588 TRACE("\n");
1590 CHECK_dmHandle();
1592 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLPARAMOPTIONS].func);
1593 return (gProxyHandle.functions[SQLAPI_INDEX_SQLPARAMOPTIONS].func) (hstmt, crow, pirow);
1597 /*************************************************************************
1598 * SQLPrimaryKeys [ODBC32.065]
1600 SQLRETURN WINAPI SQLPrimaryKeys(
1601 SQLHSTMT hstmt,
1602 SQLCHAR *szCatalogName,
1603 SQLSMALLINT cbCatalogName,
1604 SQLCHAR *szSchemaName,
1605 SQLSMALLINT cbSchemaName,
1606 SQLCHAR *szTableName,
1607 SQLSMALLINT cbTableName)
1609 TRACE("\n");
1611 CHECK_dmHandle();
1613 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLPRIMARYKEYS].func);
1614 return (gProxyHandle.functions[SQLAPI_INDEX_SQLPRIMARYKEYS].func)
1615 (hstmt, szCatalogName, cbCatalogName, szSchemaName, cbSchemaName,
1616 szTableName, cbTableName);
1620 /*************************************************************************
1621 * SQLProcedureColumns [ODBC32.066]
1623 SQLRETURN WINAPI SQLProcedureColumns(
1624 SQLHSTMT hstmt,
1625 SQLCHAR *szCatalogName,
1626 SQLSMALLINT cbCatalogName,
1627 SQLCHAR *szSchemaName,
1628 SQLSMALLINT cbSchemaName,
1629 SQLCHAR *szProcName,
1630 SQLSMALLINT cbProcName,
1631 SQLCHAR *szColumnName,
1632 SQLSMALLINT cbColumnName)
1634 TRACE("\n");
1636 CHECK_dmHandle();
1638 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLPROCEDURECOLUMNS].func);
1639 return (gProxyHandle.functions[SQLAPI_INDEX_SQLPROCEDURECOLUMNS].func)
1640 (hstmt, szCatalogName, cbCatalogName, szSchemaName, cbSchemaName,
1641 szProcName, cbProcName, szColumnName, cbColumnName);
1645 /*************************************************************************
1646 * SQLProcedures [ODBC32.067]
1648 SQLRETURN WINAPI SQLProcedures(
1649 SQLHSTMT hstmt,
1650 SQLCHAR *szCatalogName,
1651 SQLSMALLINT cbCatalogName,
1652 SQLCHAR *szSchemaName,
1653 SQLSMALLINT cbSchemaName,
1654 SQLCHAR *szProcName,
1655 SQLSMALLINT cbProcName)
1657 TRACE("\n");
1659 CHECK_dmHandle();
1661 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLPROCEDURES].func);
1662 return (gProxyHandle.functions[SQLAPI_INDEX_SQLPROCEDURES].func)
1663 (hstmt, szCatalogName, cbCatalogName, szSchemaName, cbSchemaName,
1664 szProcName, cbProcName);
1668 /*************************************************************************
1669 * SQLSetPos [ODBC32.068]
1671 SQLRETURN WINAPI SQLSetPos(
1672 SQLHSTMT hstmt,
1673 SQLUSMALLINT irow,
1674 SQLUSMALLINT fOption,
1675 SQLUSMALLINT fLock)
1677 TRACE("\n");
1679 CHECK_dmHandle();
1681 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLSETPOS].func);
1682 return (gProxyHandle.functions[SQLAPI_INDEX_SQLSETPOS].func)
1683 (hstmt, irow, fOption, fLock);
1687 /*************************************************************************
1688 * SQLTablePrivileges [ODBC32.070]
1690 SQLRETURN WINAPI SQLTablePrivileges(
1691 SQLHSTMT hstmt,
1692 SQLCHAR *szCatalogName,
1693 SQLSMALLINT cbCatalogName,
1694 SQLCHAR *szSchemaName,
1695 SQLSMALLINT cbSchemaName,
1696 SQLCHAR *szTableName,
1697 SQLSMALLINT cbTableName)
1699 TRACE("\n");
1701 CHECK_dmHandle();
1703 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLTABLEPRIVILEGES].func);
1704 return (gProxyHandle.functions[SQLAPI_INDEX_SQLTABLEPRIVILEGES].func)
1705 (hstmt, szCatalogName, cbCatalogName, szSchemaName, cbSchemaName,
1706 szTableName, cbTableName);
1710 /*************************************************************************
1711 * SQLDrivers [ODBC32.071]
1713 SQLRETURN WINAPI SQLDrivers(
1714 SQLHENV henv,
1715 SQLUSMALLINT fDirection,
1716 SQLCHAR *szDriverDesc,
1717 SQLSMALLINT cbDriverDescMax,
1718 SQLSMALLINT *pcbDriverDesc,
1719 SQLCHAR *szDriverAttributes,
1720 SQLSMALLINT cbDriverAttrMax,
1721 SQLSMALLINT *pcbDriverAttr)
1723 TRACE("\n");
1725 CHECK_dmHandle();
1727 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLDRIVERS].func);
1728 return (gProxyHandle.functions[SQLAPI_INDEX_SQLDRIVERS].func)
1729 (henv, fDirection, szDriverDesc, cbDriverDescMax, pcbDriverDesc,
1730 szDriverAttributes, cbDriverAttrMax, pcbDriverAttr);
1734 /*************************************************************************
1735 * SQLBindParameter [ODBC32.072]
1737 SQLRETURN WINAPI SQLBindParameter(
1738 SQLHSTMT hstmt,
1739 SQLUSMALLINT ipar,
1740 SQLSMALLINT fParamType,
1741 SQLSMALLINT fCType,
1742 SQLSMALLINT fSqlType,
1743 SQLUINTEGER cbColDef,
1744 SQLSMALLINT ibScale,
1745 SQLPOINTER rgbValue,
1746 SQLINTEGER cbValueMax,
1747 SQLINTEGER *pcbValue)
1749 TRACE("\n");
1751 CHECK_dmHandle();
1753 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLBINDPARAMETER].func);
1754 return (gProxyHandle.functions[SQLAPI_INDEX_SQLBINDPARAMETER].func)
1755 (hstmt, ipar, fParamType, fCType, fSqlType, cbColDef, ibScale,
1756 rgbValue, cbValueMax, pcbValue);
1760 /*************************************************************************
1761 * SQLDriverConnect [ODBC32.041]
1763 SQLRETURN WINAPI SQLDriverConnect(
1764 SQLHDBC hdbc,
1765 SQLHWND hwnd,
1766 SQLCHAR *conn_str_in,
1767 SQLSMALLINT len_conn_str_in,
1768 SQLCHAR *conn_str_out,
1769 SQLSMALLINT conn_str_out_max,
1770 SQLSMALLINT *ptr_conn_str_out,
1771 SQLUSMALLINT driver_completion )
1773 TRACE("\n");
1775 CHECK_dmHandle();
1777 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLDRIVERCONNECT].func);
1778 return (gProxyHandle.functions[SQLAPI_INDEX_SQLDRIVERCONNECT].func)
1779 (hdbc, hwnd, conn_str_in, len_conn_str_in, conn_str_out,
1780 conn_str_out_max, ptr_conn_str_out, driver_completion);
1784 /*************************************************************************
1785 * SQLSetScrollOptions [ODBC32.069]
1787 SQLRETURN WINAPI SQLSetScrollOptions(
1788 SQLHSTMT statement_handle,
1789 SQLUSMALLINT f_concurrency,
1790 SQLINTEGER crow_keyset,
1791 SQLUSMALLINT crow_rowset )
1793 TRACE("\n");
1795 CHECK_dmHandle();
1797 assert (gProxyHandle.functions[SQLAPI_INDEX_SQLSETSCROLLOPTIONS].func);
1798 return (gProxyHandle.functions[SQLAPI_INDEX_SQLSETSCROLLOPTIONS].func)
1799 (statement_handle, f_concurrency, crow_keyset, crow_rowset);
1802 /* End of file */