4 * Copyright 1999 Xiang Li, Corel Corporation
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 * Proxy ODBC driver manager. This manager delegates all ODBC
22 * calls to a real ODBC driver manager named by the environment
23 * variable LIB_ODBC_DRIVER_MANAGER, or to libodbc.so if the
24 * variable is not set.
38 #include "wine/debug.h"
45 WINE_DEFAULT_DEBUG_CHANNEL(odbc
);
46 WINE_DECLARE_DEBUG_CHANNEL(winediag
);
49 static SQLRETURN WINAPI
null_SQLAllocConnect(SQLHENV EnvironmentHandle
, SQLHDBC
*ConnectionHandle
)
51 *ConnectionHandle
= SQL_NULL_HDBC
;
56 static SQLRETURN WINAPI
null_SQLAllocEnv(SQLHENV
*EnvironmentHandle
)
58 *EnvironmentHandle
= SQL_NULL_HENV
;
63 static SQLRETURN WINAPI
null_SQLAllocHandle(SQLSMALLINT HandleType
, SQLHANDLE InputHandle
, SQLHANDLE
*OutputHandle
)
65 WARN("ProxyODBC: Cannot load ODBC driver manager library.\n");
67 if (HandleType
== SQL_HANDLE_ENV
)
68 *OutputHandle
= SQL_NULL_HENV
;
69 else if (HandleType
== SQL_HANDLE_DBC
)
70 *OutputHandle
= SQL_NULL_HDBC
;
71 else if (HandleType
== SQL_HANDLE_STMT
)
72 *OutputHandle
= SQL_NULL_HSTMT
;
73 else if (HandleType
== SQL_HANDLE_DESC
)
74 *OutputHandle
= SQL_NULL_HDESC
;
79 static SQLRETURN WINAPI
null_SQLAllocHandleStd(SQLSMALLINT HandleType
, SQLHANDLE InputHandle
, SQLHANDLE
*OutputHandle
)
81 WARN("ProxyODBC: Cannot load ODBC driver manager library.\n");
83 if (HandleType
== SQL_HANDLE_ENV
)
84 *OutputHandle
= SQL_NULL_HENV
;
85 else if (HandleType
== SQL_HANDLE_DBC
)
86 *OutputHandle
= SQL_NULL_HDBC
;
87 else if (HandleType
== SQL_HANDLE_STMT
)
88 *OutputHandle
= SQL_NULL_HSTMT
;
89 else if (HandleType
== SQL_HANDLE_DESC
)
90 *OutputHandle
= SQL_NULL_HDESC
;
95 static SQLRETURN WINAPI
null_SQLAllocStmt(SQLHDBC ConnectionHandle
, SQLHSTMT
*StatementHandle
)
97 *StatementHandle
= SQL_NULL_HSTMT
;
102 static SQLRETURN WINAPI
null_SQLBindCol(SQLHSTMT StatementHandle
, SQLUSMALLINT ColumnNumber
, SQLSMALLINT TargetType
,
103 SQLPOINTER TargetValue
, SQLLEN BufferLength
, SQLLEN
*StrLen_or_Ind
)
108 static SQLRETURN WINAPI
null_SQLBindParam(SQLHSTMT StatementHandle
, SQLUSMALLINT ParameterNumber
, SQLSMALLINT ValueType
,
109 SQLSMALLINT ParameterType
, SQLULEN LengthPrecision
, SQLSMALLINT ParameterScale
,
110 SQLPOINTER ParameterValue
, SQLLEN
*StrLen_or_Ind
)
115 static SQLRETURN WINAPI
null_SQLBindParameter(SQLHSTMT hstmt
, SQLUSMALLINT ipar
, SQLSMALLINT fParamType
,
116 SQLSMALLINT fCType
, SQLSMALLINT fSqlType
, SQLULEN cbColDef
,
117 SQLSMALLINT ibScale
, SQLPOINTER rgbValue
, SQLLEN cbValueMax
,
123 static SQLRETURN WINAPI
null_SQLBrowseConnect(SQLHDBC hdbc
, SQLCHAR
*szConnStrIn
, SQLSMALLINT cbConnStrIn
,
124 SQLCHAR
*szConnStrOut
, SQLSMALLINT cbConnStrOutMax
,
125 SQLSMALLINT
*pcbConnStrOut
)
130 static SQLRETURN WINAPI
null_SQLBrowseConnectW(SQLHDBC hdbc
, SQLWCHAR
*szConnStrIn
, SQLSMALLINT cbConnStrIn
,
131 SQLWCHAR
*szConnStrOut
, SQLSMALLINT cbConnStrOutMax
,
132 SQLSMALLINT
*pcbConnStrOut
)
137 static SQLRETURN WINAPI
null_SQLBulkOperations(SQLHSTMT StatementHandle
, SQLSMALLINT Operation
)
142 static SQLRETURN WINAPI
null_SQLCancel(SQLHSTMT StatementHandle
)
147 static SQLRETURN WINAPI
null_SQLCloseCursor(SQLHSTMT StatementHandle
)
152 static SQLRETURN WINAPI
null_SQLColAttribute(SQLHSTMT StatementHandle
, SQLUSMALLINT ColumnNumber
,
153 SQLUSMALLINT FieldIdentifier
, SQLPOINTER CharacterAttribute
,
154 SQLSMALLINT BufferLength
, SQLSMALLINT
*StringLength
,
155 SQLLEN
*NumericAttribute
)
160 static SQLRETURN WINAPI
null_SQLColAttributeW(SQLHSTMT StatementHandle
, SQLUSMALLINT ColumnNumber
,
161 SQLUSMALLINT FieldIdentifier
, SQLPOINTER CharacterAttribute
,
162 SQLSMALLINT BufferLength
, SQLSMALLINT
*StringLength
,
163 SQLLEN
*NumericAttribute
)
168 static SQLRETURN WINAPI
null_SQLColAttributes(SQLHSTMT hstmt
, SQLUSMALLINT icol
, SQLUSMALLINT fDescType
,
169 SQLPOINTER rgbDesc
, SQLSMALLINT cbDescMax
, SQLSMALLINT
*pcbDesc
,
175 static SQLRETURN WINAPI
null_SQLColAttributesW(SQLHSTMT hstmt
, SQLUSMALLINT icol
, SQLUSMALLINT fDescType
,
176 SQLPOINTER rgbDesc
, SQLSMALLINT cbDescMax
, SQLSMALLINT
*pcbDesc
,
182 static SQLRETURN WINAPI
null_SQLColumnPrivileges(SQLHSTMT hstmt
, SQLCHAR
*szCatalogName
, SQLSMALLINT cbCatalogName
,
183 SQLCHAR
*szSchemaName
, SQLSMALLINT cbSchemaName
, SQLCHAR
*szTableName
,
184 SQLSMALLINT cbTableName
, SQLCHAR
*szColumnName
, SQLSMALLINT cbColumnName
)
189 static SQLRETURN WINAPI
null_SQLColumnPrivilegesW(SQLHSTMT hstmt
, SQLWCHAR
*szCatalogName
, SQLSMALLINT cbCatalogName
,
190 SQLWCHAR
*szSchemaName
, SQLSMALLINT cbSchemaName
, SQLWCHAR
*szTableName
,
191 SQLSMALLINT cbTableName
, SQLWCHAR
*szColumnName
, SQLSMALLINT cbColumnName
)
196 static SQLRETURN WINAPI
null_SQLColumns(SQLHSTMT StatementHandle
, SQLCHAR
*CatalogName
, SQLSMALLINT NameLength1
,
197 SQLCHAR
*SchemaName
, SQLSMALLINT NameLength2
, SQLCHAR
*TableName
,
198 SQLSMALLINT NameLength3
, SQLCHAR
*ColumnName
, SQLSMALLINT NameLength4
)
203 static SQLRETURN WINAPI
null_SQLColumnsW(SQLHSTMT StatementHandle
, WCHAR
*CatalogName
, SQLSMALLINT NameLength1
,
204 WCHAR
*SchemaName
, SQLSMALLINT NameLength2
, WCHAR
*TableName
,
205 SQLSMALLINT NameLength3
, WCHAR
*ColumnName
, SQLSMALLINT NameLength4
)
210 static SQLRETURN WINAPI
null_SQLConnect(SQLHDBC ConnectionHandle
, SQLCHAR
*ServerName
, SQLSMALLINT NameLength1
,
211 SQLCHAR
*UserName
, SQLSMALLINT NameLength2
, SQLCHAR
*Authentication
,
212 SQLSMALLINT NameLength3
)
217 static SQLRETURN WINAPI
null_SQLConnectW(SQLHDBC ConnectionHandle
, WCHAR
*ServerName
, SQLSMALLINT NameLength1
,
218 WCHAR
*UserName
, SQLSMALLINT NameLength2
, WCHAR
*Authentication
,
219 SQLSMALLINT NameLength3
)
224 static SQLRETURN WINAPI
null_SQLCopyDesc(SQLHDESC SourceDescHandle
, SQLHDESC TargetDescHandle
)
229 static SQLRETURN WINAPI
null_SQLDataSources(SQLHENV EnvironmentHandle
, SQLUSMALLINT Direction
, SQLCHAR
*ServerName
,
230 SQLSMALLINT BufferLength1
, SQLSMALLINT
*NameLength1
, SQLCHAR
*Description
,
231 SQLSMALLINT BufferLength2
, SQLSMALLINT
*NameLength2
)
236 static SQLRETURN WINAPI
null_SQLDataSourcesA(SQLHENV EnvironmentHandle
, SQLUSMALLINT Direction
, SQLCHAR
*ServerName
,
237 SQLSMALLINT BufferLength1
, SQLSMALLINT
*NameLength1
, SQLCHAR
*Description
,
238 SQLSMALLINT BufferLength2
, SQLSMALLINT
*NameLength2
)
243 static SQLRETURN WINAPI
null_SQLDataSourcesW(SQLHENV EnvironmentHandle
, SQLUSMALLINT Direction
, WCHAR
*ServerName
,
244 SQLSMALLINT BufferLength1
, SQLSMALLINT
*NameLength1
, WCHAR
*Description
,
245 SQLSMALLINT BufferLength2
, SQLSMALLINT
*NameLength2
)
250 static SQLRETURN WINAPI
null_SQLDescribeCol(SQLHSTMT StatementHandle
, SQLUSMALLINT ColumnNumber
, SQLCHAR
*ColumnName
,
251 SQLSMALLINT BufferLength
, SQLSMALLINT
*NameLength
, SQLSMALLINT
*DataType
,
252 SQLULEN
*ColumnSize
, SQLSMALLINT
*DecimalDigits
, SQLSMALLINT
*Nullable
)
257 static SQLRETURN WINAPI
null_SQLDescribeColW(SQLHSTMT StatementHandle
, SQLUSMALLINT ColumnNumber
, WCHAR
*ColumnName
,
258 SQLSMALLINT BufferLength
, SQLSMALLINT
*NameLength
, SQLSMALLINT
*DataType
,
259 SQLULEN
*ColumnSize
, SQLSMALLINT
*DecimalDigits
, SQLSMALLINT
*Nullable
)
264 static SQLRETURN WINAPI
null_SQLDescribeParam(SQLHSTMT hstmt
, SQLUSMALLINT ipar
, SQLSMALLINT
*pfSqlType
,
265 SQLULEN
*pcbParamDef
, SQLSMALLINT
*pibScale
, SQLSMALLINT
*pfNullable
)
270 static SQLRETURN WINAPI
null_SQLDisconnect(SQLHDBC ConnectionHandle
)
275 static SQLRETURN WINAPI
null_SQLDriverConnect(SQLHDBC hdbc
, SQLHWND hwnd
, SQLCHAR
*ConnectionString
, SQLSMALLINT Length
,
276 SQLCHAR
*conn_str_out
, SQLSMALLINT conn_str_out_max
,
277 SQLSMALLINT
*ptr_conn_str_out
, SQLUSMALLINT driver_completion
)
282 static SQLRETURN WINAPI
null_SQLDriverConnectW(SQLHDBC ConnectionHandle
, SQLHWND WindowHandle
, WCHAR
*InConnectionString
,
283 SQLSMALLINT Length
, WCHAR
*OutConnectionString
, SQLSMALLINT BufferLength
,
284 SQLSMALLINT
*Length2
, SQLUSMALLINT DriverCompletion
)
289 static SQLRETURN WINAPI
null_SQLDrivers(SQLHENV EnvironmentHandle
, SQLUSMALLINT fDirection
, SQLCHAR
*szDriverDesc
,
290 SQLSMALLINT cbDriverDescMax
, SQLSMALLINT
*pcbDriverDesc
,
291 SQLCHAR
*szDriverAttributes
, SQLSMALLINT cbDriverAttrMax
,
292 SQLSMALLINT
*pcbDriverAttr
)
297 static SQLRETURN WINAPI
null_SQLDriversW(SQLHENV EnvironmentHandle
, SQLUSMALLINT fDirection
, SQLWCHAR
*szDriverDesc
,
298 SQLSMALLINT cbDriverDescMax
, SQLSMALLINT
*pcbDriverDesc
,
299 SQLWCHAR
*szDriverAttributes
, SQLSMALLINT cbDriverAttrMax
,
300 SQLSMALLINT
*pcbDriverAttr
)
305 static SQLRETURN WINAPI
null_SQLEndTran(SQLSMALLINT HandleType
, SQLHANDLE Handle
, SQLSMALLINT CompletionType
)
310 static SQLRETURN WINAPI
null_SQLError(SQLHENV EnvironmentHandle
, SQLHDBC ConnectionHandle
, SQLHSTMT StatementHandle
,
311 SQLCHAR
*Sqlstate
, SQLINTEGER
*NativeError
, SQLCHAR
*MessageText
,
312 SQLSMALLINT BufferLength
, SQLSMALLINT
*TextLength
)
317 static SQLRETURN WINAPI
null_SQLErrorW(SQLHENV EnvironmentHandle
, SQLHDBC ConnectionHandle
, SQLHSTMT StatementHandle
,
318 WCHAR
*Sqlstate
, SQLINTEGER
*NativeError
, WCHAR
*MessageText
,
319 SQLSMALLINT BufferLength
, SQLSMALLINT
*TextLength
)
324 static SQLRETURN WINAPI
null_SQLExecDirect(SQLHSTMT StatementHandle
, SQLCHAR
*StatementText
, SQLINTEGER TextLength
)
329 static SQLRETURN WINAPI
null_SQLExecDirectW(SQLHSTMT StatementHandle
, WCHAR
*StatementText
, SQLINTEGER TextLength
)
334 static SQLRETURN WINAPI
null_SQLExecute(SQLHSTMT StatementHandle
)
339 static SQLRETURN WINAPI
null_SQLExtendedFetch(SQLHSTMT hstmt
, SQLUSMALLINT fFetchType
, SQLLEN irow
, SQLULEN
*pcrow
,
340 SQLUSMALLINT
*rgfRowStatus
)
345 static SQLRETURN WINAPI
null_SQLFetch(SQLHSTMT StatementHandle
)
350 static SQLRETURN WINAPI
null_SQLFetchScroll(SQLHSTMT StatementHandle
, SQLSMALLINT FetchOrientation
, SQLLEN FetchOffset
)
355 static SQLRETURN WINAPI
null_SQLForeignKeys(SQLHSTMT hstmt
, SQLCHAR
*szPkCatalogName
, SQLSMALLINT cbPkCatalogName
,
356 SQLCHAR
*szPkSchemaName
, SQLSMALLINT cbPkSchemaName
, SQLCHAR
*szPkTableName
,
357 SQLSMALLINT cbPkTableName
, SQLCHAR
*szFkCatalogName
,
358 SQLSMALLINT cbFkCatalogName
, SQLCHAR
*szFkSchemaName
,
359 SQLSMALLINT cbFkSchemaName
, SQLCHAR
*szFkTableName
, SQLSMALLINT cbFkTableName
)
364 static SQLRETURN WINAPI
null_SQLForeignKeysW(SQLHSTMT hstmt
, SQLWCHAR
*szPkCatalogName
, SQLSMALLINT cbPkCatalogName
,
365 SQLWCHAR
*szPkSchemaName
, SQLSMALLINT cbPkSchemaName
, SQLWCHAR
*szPkTableName
,
366 SQLSMALLINT cbPkTableName
, SQLWCHAR
*szFkCatalogName
,
367 SQLSMALLINT cbFkCatalogName
, SQLWCHAR
*szFkSchemaName
,
368 SQLSMALLINT cbFkSchemaName
, SQLWCHAR
*szFkTableName
, SQLSMALLINT cbFkTableName
)
373 static SQLRETURN WINAPI
null_SQLFreeConnect(SQLHDBC ConnectionHandle
)
378 static SQLRETURN WINAPI
null_SQLFreeEnv(SQLHENV EnvironmentHandle
)
383 static SQLRETURN WINAPI
null_SQLFreeHandle(SQLSMALLINT HandleType
, SQLHANDLE Handle
)
388 static SQLRETURN WINAPI
null_SQLFreeStmt(SQLHSTMT StatementHandle
, SQLUSMALLINT Option
)
393 static SQLRETURN WINAPI
null_SQLGetConnectAttr(SQLHDBC ConnectionHandle
, SQLINTEGER Attribute
, SQLPOINTER Value
,
394 SQLINTEGER BufferLength
, SQLINTEGER
*StringLength
)
399 static SQLRETURN WINAPI
null_SQLGetConnectAttrW(SQLHDBC ConnectionHandle
, SQLINTEGER Attribute
, SQLPOINTER Value
,
400 SQLINTEGER BufferLength
, SQLINTEGER
*StringLength
)
405 static SQLRETURN WINAPI
null_SQLGetConnectOption(SQLHDBC ConnectionHandle
, SQLUSMALLINT Option
, SQLPOINTER Value
)
410 static SQLRETURN WINAPI
null_SQLGetConnectOptionW(SQLHDBC ConnectionHandle
, SQLUSMALLINT Option
, SQLPOINTER Value
)
415 static SQLRETURN WINAPI
null_SQLGetCursorName(SQLHSTMT StatementHandle
, SQLCHAR
*CursorName
, SQLSMALLINT BufferLength
,
416 SQLSMALLINT
*NameLength
)
421 static SQLRETURN WINAPI
null_SQLGetCursorNameW(SQLHSTMT StatementHandle
, WCHAR
*CursorName
, SQLSMALLINT BufferLength
,
422 SQLSMALLINT
*NameLength
)
427 static SQLRETURN WINAPI
null_SQLGetData(SQLHSTMT StatementHandle
, SQLUSMALLINT ColumnNumber
, SQLSMALLINT TargetType
,
428 SQLPOINTER TargetValue
, SQLLEN BufferLength
, SQLLEN
*StrLen_or_Ind
)
433 static SQLRETURN WINAPI
null_SQLGetDescField(SQLHDESC DescriptorHandle
, SQLSMALLINT RecNumber
, SQLSMALLINT FieldIdentifier
,
434 SQLPOINTER Value
, SQLINTEGER BufferLength
, SQLINTEGER
*StringLength
)
439 static SQLRETURN WINAPI
null_SQLGetDescFieldW(SQLHDESC DescriptorHandle
, SQLSMALLINT RecNumber
, SQLSMALLINT FieldIdentifier
,
440 SQLPOINTER Value
, SQLINTEGER BufferLength
, SQLINTEGER
*StringLength
)
445 static SQLRETURN WINAPI
null_SQLGetDescRec(SQLHDESC DescriptorHandle
, SQLSMALLINT RecNumber
, SQLCHAR
*Name
,
446 SQLSMALLINT BufferLength
, SQLSMALLINT
*StringLength
, SQLSMALLINT
*Type
,
447 SQLSMALLINT
*SubType
, SQLLEN
*Length
, SQLSMALLINT
*Precision
,
448 SQLSMALLINT
*Scale
, SQLSMALLINT
*Nullable
)
453 static SQLRETURN WINAPI
null_SQLGetDescRecW(SQLHDESC DescriptorHandle
, SQLSMALLINT RecNumber
, WCHAR
*Name
,
454 SQLSMALLINT BufferLength
, SQLSMALLINT
*StringLength
, SQLSMALLINT
*Type
,
455 SQLSMALLINT
*SubType
, SQLLEN
*Length
, SQLSMALLINT
*Precision
,
456 SQLSMALLINT
*Scale
, SQLSMALLINT
*Nullable
)
461 static SQLRETURN WINAPI
null_SQLGetDiagField(SQLSMALLINT HandleType
, SQLHANDLE Handle
, SQLSMALLINT RecNumber
,
462 SQLSMALLINT DiagIdentifier
, SQLPOINTER DiagInfo
, SQLSMALLINT BufferLength
,
463 SQLSMALLINT
*StringLength
)
468 static SQLRETURN WINAPI
null_SQLGetDiagFieldW(SQLSMALLINT HandleType
, SQLHANDLE Handle
, SQLSMALLINT RecNumber
,
469 SQLSMALLINT DiagIdentifier
, SQLPOINTER DiagInfo
, SQLSMALLINT BufferLength
,
470 SQLSMALLINT
*StringLength
)
475 static SQLRETURN WINAPI
null_SQLGetDiagRec(SQLSMALLINT HandleType
, SQLHANDLE Handle
, SQLSMALLINT RecNumber
,
476 SQLCHAR
*Sqlstate
, SQLINTEGER
*NativeError
, SQLCHAR
*MessageText
,
477 SQLSMALLINT BufferLength
, SQLSMALLINT
*TextLength
)
482 static SQLRETURN WINAPI
null_SQLGetDiagRecA(SQLSMALLINT HandleType
, SQLHANDLE Handle
, SQLSMALLINT RecNumber
,
483 SQLCHAR
*Sqlstate
, SQLINTEGER
*NativeError
, SQLCHAR
*MessageText
,
484 SQLSMALLINT BufferLength
, SQLSMALLINT
*TextLength
)
489 static SQLRETURN WINAPI
null_SQLGetDiagRecW(SQLSMALLINT HandleType
, SQLHANDLE Handle
, SQLSMALLINT RecNumber
,
490 WCHAR
*Sqlstate
, SQLINTEGER
*NativeError
, WCHAR
*MessageText
,
491 SQLSMALLINT BufferLength
, SQLSMALLINT
*TextLength
)
496 static SQLRETURN WINAPI
null_SQLGetEnvAttr(SQLHENV EnvironmentHandle
, SQLINTEGER Attribute
, SQLPOINTER Value
,
497 SQLINTEGER BufferLength
, SQLINTEGER
*StringLength
)
502 static SQLRETURN WINAPI
null_SQLGetFunctions(SQLHDBC ConnectionHandle
, SQLUSMALLINT FunctionId
, SQLUSMALLINT
*Supported
)
507 static SQLRETURN WINAPI
null_SQLGetInfo(SQLHDBC ConnectionHandle
, SQLUSMALLINT InfoType
, SQLPOINTER InfoValue
,
508 SQLSMALLINT BufferLength
, SQLSMALLINT
*StringLength
)
513 static SQLRETURN WINAPI
null_SQLGetInfoW(SQLHDBC ConnectionHandle
, SQLUSMALLINT InfoType
, SQLPOINTER InfoValue
,
514 SQLSMALLINT BufferLength
, SQLSMALLINT
*StringLength
)
519 static SQLRETURN WINAPI
null_SQLGetStmtAttr(SQLHSTMT StatementHandle
, SQLINTEGER Attribute
, SQLPOINTER Value
,
520 SQLINTEGER BufferLength
, SQLINTEGER
*StringLength
)
525 static SQLRETURN WINAPI
null_SQLGetStmtAttrW(SQLHSTMT StatementHandle
, SQLINTEGER Attribute
, SQLPOINTER Value
,
526 SQLINTEGER BufferLength
, SQLINTEGER
*StringLength
)
531 static SQLRETURN WINAPI
null_SQLGetStmtOption(SQLHSTMT StatementHandle
, SQLUSMALLINT Option
, SQLPOINTER Value
)
536 static SQLRETURN WINAPI
null_SQLGetTypeInfo(SQLHSTMT StatementHandle
, SQLSMALLINT DataType
)
541 static SQLRETURN WINAPI
null_SQLGetTypeInfoW(SQLHSTMT StatementHandle
, SQLSMALLINT DataType
)
546 static SQLRETURN WINAPI
null_SQLMoreResults(SQLHSTMT StatementHandle
)
551 static SQLRETURN WINAPI
null_SQLNativeSql(SQLHDBC hdbc
, SQLCHAR
*szSqlStrIn
, SQLINTEGER cbSqlStrIn
, SQLCHAR
*szSqlStr
,
552 SQLINTEGER cbSqlStrMax
, SQLINTEGER
*pcbSqlStr
)
557 static SQLRETURN WINAPI
null_SQLNativeSqlW(SQLHDBC hdbc
, SQLWCHAR
*szSqlStrIn
, SQLINTEGER cbSqlStrIn
, SQLWCHAR
*szSqlStr
,
558 SQLINTEGER cbSqlStrMax
, SQLINTEGER
*pcbSqlStr
)
563 static SQLRETURN WINAPI
null_SQLNumParams(SQLHSTMT hstmt
, SQLSMALLINT
*pcpar
)
568 static SQLRETURN WINAPI
null_SQLNumResultCols(SQLHSTMT StatementHandle
, SQLSMALLINT
*ColumnCount
)
573 static SQLRETURN WINAPI
null_SQLParamData(SQLHSTMT StatementHandle
, SQLPOINTER
*Value
)
578 static SQLRETURN WINAPI
null_SQLParamOptions(SQLHSTMT hstmt
, SQLULEN crow
, SQLULEN
*pirow
)
583 static SQLRETURN WINAPI
null_SQLPrepare(SQLHSTMT StatementHandle
, SQLCHAR
*StatementText
, SQLINTEGER TextLength
)
588 static SQLRETURN WINAPI
null_SQLPrepareW(SQLHSTMT StatementHandle
, WCHAR
*StatementText
, SQLINTEGER TextLength
)
593 static SQLRETURN WINAPI
null_SQLPrimaryKeys(SQLHSTMT hstmt
, SQLCHAR
*szCatalogName
, SQLSMALLINT cbCatalogName
,
594 SQLCHAR
*szSchemaName
, SQLSMALLINT cbSchemaName
, SQLCHAR
*szTableName
,
595 SQLSMALLINT cbTableName
)
600 static SQLRETURN WINAPI
null_SQLPrimaryKeysW(SQLHSTMT hstmt
, SQLWCHAR
*szCatalogName
, SQLSMALLINT cbCatalogName
,
601 SQLWCHAR
*szSchemaName
, SQLSMALLINT cbSchemaName
, SQLWCHAR
*szTableName
,
602 SQLSMALLINT cbTableName
)
607 static SQLRETURN WINAPI
null_SQLProcedureColumns(SQLHSTMT hstmt
, SQLCHAR
*szCatalogName
, SQLSMALLINT cbCatalogName
,
608 SQLCHAR
*szSchemaName
, SQLSMALLINT cbSchemaName
, SQLCHAR
*szProcName
,
609 SQLSMALLINT cbProcName
, SQLCHAR
*szColumnName
, SQLSMALLINT cbColumnName
)
614 static SQLRETURN WINAPI
null_SQLProcedureColumnsW(SQLHSTMT hstmt
, SQLWCHAR
*szCatalogName
, SQLSMALLINT cbCatalogName
,
615 SQLWCHAR
*szSchemaName
, SQLSMALLINT cbSchemaName
, SQLWCHAR
*szProcName
,
616 SQLSMALLINT cbProcName
, SQLWCHAR
*szColumnName
, SQLSMALLINT cbColumnName
)
621 static SQLRETURN WINAPI
null_SQLProcedures(SQLHSTMT hstmt
, SQLCHAR
*szCatalogName
, SQLSMALLINT cbCatalogName
,
622 SQLCHAR
*szSchemaName
, SQLSMALLINT cbSchemaName
, SQLCHAR
*szProcName
,
623 SQLSMALLINT cbProcName
)
628 static SQLRETURN WINAPI
null_SQLProceduresW(SQLHSTMT hstmt
, SQLWCHAR
*szCatalogName
, SQLSMALLINT cbCatalogName
,
629 SQLWCHAR
*szSchemaName
, SQLSMALLINT cbSchemaName
, SQLWCHAR
*szProcName
,
630 SQLSMALLINT cbProcName
)
635 static SQLRETURN WINAPI
null_SQLPutData(SQLHSTMT StatementHandle
, SQLPOINTER Data
, SQLLEN StrLen_or_Ind
)
640 static SQLRETURN WINAPI
null_SQLRowCount(SQLHSTMT StatementHandle
, SQLLEN
*RowCount
)
645 static SQLRETURN WINAPI
null_SQLSetConnectAttr(SQLHDBC ConnectionHandle
, SQLINTEGER Attribute
, SQLPOINTER Value
,
646 SQLINTEGER StringLength
)
651 static SQLRETURN WINAPI
null_SQLSetConnectAttrW(SQLHDBC ConnectionHandle
, SQLINTEGER Attribute
, SQLPOINTER Value
,
652 SQLINTEGER StringLength
)
657 static SQLRETURN WINAPI
null_SQLSetConnectOption(SQLHDBC ConnectionHandle
, SQLUSMALLINT Option
, SQLULEN Value
)
662 static SQLRETURN WINAPI
null_SQLSetConnectOptionW(SQLHDBC ConnectionHandle
, SQLUSMALLINT Option
, SQLULEN Value
)
667 static SQLRETURN WINAPI
null_SQLSetCursorName(SQLHSTMT StatementHandle
, SQLCHAR
*CursorName
, SQLSMALLINT NameLength
)
672 static SQLRETURN WINAPI
null_SQLSetCursorNameW(SQLHSTMT StatementHandle
, WCHAR
*CursorName
, SQLSMALLINT NameLength
)
677 static SQLRETURN WINAPI
null_SQLSetDescField(SQLHDESC DescriptorHandle
, SQLSMALLINT RecNumber
, SQLSMALLINT FieldIdentifier
,
678 SQLPOINTER Value
, SQLINTEGER BufferLength
)
683 static SQLRETURN WINAPI
null_SQLSetDescFieldW(SQLHDESC DescriptorHandle
, SQLSMALLINT RecNumber
, SQLSMALLINT FieldIdentifier
,
684 SQLPOINTER Value
, SQLINTEGER BufferLength
)
689 static SQLRETURN WINAPI
null_SQLSetDescRec(SQLHDESC DescriptorHandle
, SQLSMALLINT RecNumber
, SQLSMALLINT Type
,
690 SQLSMALLINT SubType
, SQLLEN Length
, SQLSMALLINT Precision
, SQLSMALLINT Scale
,
691 SQLPOINTER Data
, SQLLEN
*StringLength
, SQLLEN
*Indicator
)
696 static SQLRETURN WINAPI
null_SQLSetEnvAttr(SQLHENV EnvironmentHandle
, SQLINTEGER Attribute
, SQLPOINTER Value
,
697 SQLINTEGER StringLength
)
702 static SQLRETURN WINAPI
null_SQLSetParam(SQLHSTMT StatementHandle
, SQLUSMALLINT ParameterNumber
, SQLSMALLINT ValueType
,
703 SQLSMALLINT ParameterType
, SQLULEN LengthPrecision
, SQLSMALLINT ParameterScale
,
704 SQLPOINTER ParameterValue
, SQLLEN
*StrLen_or_Ind
)
709 static SQLRETURN WINAPI
null_SQLSetPos(SQLHSTMT hstmt
, SQLSETPOSIROW irow
, SQLUSMALLINT fOption
, SQLUSMALLINT fLock
)
714 static SQLRETURN WINAPI
null_SQLSetScrollOptions(SQLHSTMT statement_handle
, SQLUSMALLINT f_concurrency
, SQLLEN crow_keyset
,
715 SQLUSMALLINT crow_rowset
)
720 static SQLRETURN WINAPI
null_SQLSetStmtAttr(SQLHSTMT StatementHandle
, SQLINTEGER Attribute
, SQLPOINTER Value
,
721 SQLINTEGER StringLength
)
726 static SQLRETURN WINAPI
null_SQLSetStmtAttrW(SQLHSTMT StatementHandle
, SQLINTEGER Attribute
, SQLPOINTER Value
,
727 SQLINTEGER StringLength
)
732 static SQLRETURN WINAPI
null_SQLSetStmtOption(SQLHSTMT StatementHandle
, SQLUSMALLINT Option
, SQLULEN Value
)
737 static SQLRETURN WINAPI
null_SQLSpecialColumns(SQLHSTMT StatementHandle
, SQLUSMALLINT IdentifierType
, SQLCHAR
*CatalogName
,
738 SQLSMALLINT NameLength1
, SQLCHAR
*SchemaName
, SQLSMALLINT NameLength2
,
739 SQLCHAR
*TableName
, SQLSMALLINT NameLength3
, SQLUSMALLINT Scope
,
740 SQLUSMALLINT Nullable
)
745 static SQLRETURN WINAPI
null_SQLSpecialColumnsW(SQLHSTMT StatementHandle
, SQLUSMALLINT IdentifierType
,
746 SQLWCHAR
*CatalogName
, SQLSMALLINT NameLength1
, SQLWCHAR
*SchemaName
,
747 SQLSMALLINT NameLength2
, SQLWCHAR
*TableName
, SQLSMALLINT NameLength3
,
748 SQLUSMALLINT Scope
, SQLUSMALLINT Nullable
)
753 static SQLRETURN WINAPI
null_SQLStatistics(SQLHSTMT StatementHandle
, SQLCHAR
*CatalogName
, SQLSMALLINT NameLength1
,
754 SQLCHAR
*SchemaName
, SQLSMALLINT NameLength2
, SQLCHAR
*TableName
,
755 SQLSMALLINT NameLength3
, SQLUSMALLINT Unique
, SQLUSMALLINT Reserved
)
760 static SQLRETURN WINAPI
null_SQLStatisticsW(SQLHSTMT StatementHandle
, SQLWCHAR
*CatalogName
, SQLSMALLINT NameLength1
,
761 SQLWCHAR
*SchemaName
, SQLSMALLINT NameLength2
, SQLWCHAR
*TableName
,
762 SQLSMALLINT NameLength3
, SQLUSMALLINT Unique
, SQLUSMALLINT Reserved
)
767 static SQLRETURN WINAPI
null_SQLTablePrivileges(SQLHSTMT hstmt
, SQLCHAR
*szCatalogName
, SQLSMALLINT cbCatalogName
,
768 SQLCHAR
*szSchemaName
, SQLSMALLINT cbSchemaName
, SQLCHAR
*szTableName
,
769 SQLSMALLINT cbTableName
)
774 static SQLRETURN WINAPI
null_SQLTablePrivilegesW(SQLHSTMT hstmt
, SQLWCHAR
*szCatalogName
, SQLSMALLINT cbCatalogName
,
775 SQLWCHAR
*szSchemaName
, SQLSMALLINT cbSchemaName
, SQLWCHAR
*szTableName
,
776 SQLSMALLINT cbTableName
)
781 static SQLRETURN WINAPI
null_SQLTables(SQLHSTMT StatementHandle
, SQLCHAR
*CatalogName
, SQLSMALLINT NameLength1
,
782 SQLCHAR
*SchemaName
, SQLSMALLINT NameLength2
, SQLCHAR
*TableName
,
783 SQLSMALLINT NameLength3
, SQLCHAR
*TableType
, SQLSMALLINT NameLength4
)
788 static SQLRETURN WINAPI
null_SQLTablesW(SQLHSTMT StatementHandle
, SQLWCHAR
*CatalogName
, SQLSMALLINT NameLength1
,
789 SQLWCHAR
*SchemaName
, SQLSMALLINT NameLength2
, SQLWCHAR
*TableName
,
790 SQLSMALLINT NameLength3
, SQLWCHAR
*TableType
, SQLSMALLINT NameLength4
)
795 static SQLRETURN WINAPI
null_SQLTransact(SQLHENV EnvironmentHandle
, SQLHDBC ConnectionHandle
, SQLUSMALLINT CompletionType
)
800 static struct sql_funcs sql_funcs
=
802 null_SQLAllocConnect
,
805 null_SQLAllocHandleStd
,
809 null_SQLBindParameter
,
810 null_SQLBrowseConnect
,
811 null_SQLBrowseConnectW
,
812 null_SQLBulkOperations
,
815 null_SQLColAttribute
,
816 null_SQLColAttributeW
,
817 null_SQLColAttributes
,
818 null_SQLColAttributesW
,
819 null_SQLColumnPrivileges
,
820 null_SQLColumnPrivilegesW
,
827 null_SQLDataSourcesA
,
828 null_SQLDataSourcesW
,
830 null_SQLDescribeColW
,
831 null_SQLDescribeParam
,
833 null_SQLDriverConnect
,
834 null_SQLDriverConnectW
,
843 null_SQLExtendedFetch
,
847 null_SQLForeignKeysW
,
852 null_SQLGetConnectAttr
,
853 null_SQLGetConnectAttrW
,
854 null_SQLGetConnectOption
,
855 null_SQLGetConnectOptionW
,
856 null_SQLGetCursorName
,
857 null_SQLGetCursorNameW
,
859 null_SQLGetDescField
,
860 null_SQLGetDescFieldW
,
863 null_SQLGetDiagField
,
864 null_SQLGetDiagFieldW
,
869 null_SQLGetFunctions
,
873 null_SQLGetStmtAttrW
,
874 null_SQLGetStmtOption
,
876 null_SQLGetTypeInfoW
,
881 null_SQLNumResultCols
,
883 null_SQLParamOptions
,
887 null_SQLPrimaryKeysW
,
888 null_SQLProcedureColumns
,
889 null_SQLProcedureColumnsW
,
894 null_SQLSetConnectAttr
,
895 null_SQLSetConnectAttrW
,
896 null_SQLSetConnectOption
,
897 null_SQLSetConnectOptionW
,
898 null_SQLSetCursorName
,
899 null_SQLSetCursorNameW
,
900 null_SQLSetDescField
,
901 null_SQLSetDescFieldW
,
906 null_SQLSetScrollOptions
,
908 null_SQLSetStmtAttrW
,
909 null_SQLSetStmtOption
,
910 null_SQLSpecialColumns
,
911 null_SQLSpecialColumnsW
,
914 null_SQLTablePrivileges
,
915 null_SQLTablePrivilegesW
,
922 /***********************************************************************
923 * ODBC_ReplicateODBCInstToRegistry
929 * Utility to ODBC_ReplicateToRegistry to replicate the drivers of the
930 * ODBCINST.INI settings
932 * The driver settings are not replicated to the registry. If we were to
933 * replicate them we would need to decide whether to replicate all settings
934 * or to do some translation; whether to remove any entries present only in
935 * the windows registry, etc.
938 static void ODBC_ReplicateODBCInstToRegistry (SQLHENV hEnv
)
945 TRACE ("Driver settings are not currently replicated to the registry\n");
946 if ((reg_ret
= RegCreateKeyExA (HKEY_LOCAL_MACHINE
,
947 "Software\\ODBC\\ODBCINST.INI", 0, NULL
,
948 REG_OPTION_NON_VOLATILE
,
949 KEY_ALL_ACCESS
/* a couple more than we need */, NULL
,
950 &hODBCInst
, NULL
)) == ERROR_SUCCESS
)
953 if ((reg_ret
= RegCreateKeyExA (hODBCInst
, "ODBC Drivers", 0,
954 NULL
, REG_OPTION_NON_VOLATILE
,
955 KEY_ALL_ACCESS
/* overkill */, NULL
, &hDrivers
, NULL
))
961 SQLSMALLINT sizedesc
;
964 dirn
= SQL_FETCH_FIRST
;
965 while ((sql_ret
= SQLDrivers (hEnv
, dirn
, (SQLCHAR
*)desc
, sizeof(desc
),
966 &sizedesc
, NULL
, 0, NULL
)) == SQL_SUCCESS
||
967 sql_ret
== SQL_SUCCESS_WITH_INFO
)
969 /* FIXME Do some proper handling of the SUCCESS_WITH_INFO */
970 dirn
= SQL_FETCH_NEXT
;
971 if (sizedesc
== lstrlenA(desc
))
974 if ((reg_ret
= RegQueryValueExA (hDrivers
, desc
, NULL
,
975 NULL
, NULL
, NULL
)) == ERROR_FILE_NOT_FOUND
)
977 if ((reg_ret
= RegSetValueExA (hDrivers
, desc
, 0,
978 REG_SZ
, (const BYTE
*)"Installed", 10)) != ERROR_SUCCESS
)
980 TRACE ("Error %d replicating driver %s\n",
985 else if (reg_ret
!= ERROR_SUCCESS
)
987 TRACE ("Error %d checking for %s in drivers\n",
991 if ((reg_ret
= RegCreateKeyExA (hODBCInst
, desc
, 0,
992 NULL
, REG_OPTION_NON_VOLATILE
,
993 KEY_ALL_ACCESS
, NULL
, &hThis
, NULL
))
996 /* FIXME This is where the settings go.
997 * I suggest that if the disposition says it
998 * exists then we leave it alone. Alternatively
999 * include an extra value to flag that it is
1000 * a replication of the unixODBC/iODBC/...
1002 if ((reg_ret
= RegCloseKey (hThis
)) !=
1004 TRACE ("Error %d closing %s key\n", reg_ret
,
1009 TRACE ("Error %d ensuring driver key %s\n",
1016 WARN ("Unusually long driver name %s not replicated\n",
1021 if (sql_ret
!= SQL_NO_DATA
)
1023 TRACE ("Error %d enumerating drivers\n", (int)sql_ret
);
1026 if ((reg_ret
= RegCloseKey (hDrivers
)) != ERROR_SUCCESS
)
1028 TRACE ("Error %d closing hDrivers\n", reg_ret
);
1033 TRACE ("Error %d opening HKLM\\S\\O\\OI\\Drivers\n", reg_ret
);
1035 if ((reg_ret
= RegCloseKey (hODBCInst
)) != ERROR_SUCCESS
)
1037 TRACE ("Error %d closing HKLM\\S\\O\\ODBCINST.INI\n", reg_ret
);
1042 TRACE ("Error %d opening HKLM\\S\\O\\ODBCINST.INI\n", reg_ret
);
1046 WARN ("May not have replicated all ODBC drivers to the registry\n");
1050 /***********************************************************************
1051 * ODBC_ReplicateODBCToRegistry
1057 * Utility to ODBC_ReplicateToRegistry to replicate either the USER or
1060 * For now simply place the "Driver description" (as returned by SQLDataSources)
1061 * into the registry as the driver. This is enough to satisfy Crystal's
1062 * requirement that there be a driver entry. (It doesn't seem to care what
1064 * A slightly more accurate setting would be to access the registry to find
1065 * the actual driver library for the given description (which appears to map
1066 * to one of the HKLM/Software/ODBC/ODBCINST.INI keys). (If you do this note
1067 * that this will add a requirement that this function be called after
1068 * ODBC_ReplicateODBCInstToRegistry)
1070 static void ODBC_ReplicateODBCToRegistry (BOOL is_user
, SQLHENV hEnv
)
1076 CHAR dsn
[SQL_MAX_DSN_LENGTH
+ 1];
1077 SQLSMALLINT sizedsn
;
1079 SQLSMALLINT sizedesc
;
1081 const char *which
= is_user
? "user" : "system";
1084 if ((reg_ret
= RegCreateKeyExA (
1085 is_user
? HKEY_CURRENT_USER
: HKEY_LOCAL_MACHINE
,
1086 "Software\\ODBC\\ODBC.INI", 0, NULL
, REG_OPTION_NON_VOLATILE
,
1087 KEY_ALL_ACCESS
/* a couple more than we need */, NULL
, &hODBC
,
1088 NULL
)) == ERROR_SUCCESS
)
1091 dirn
= is_user
? SQL_FETCH_FIRST_USER
: SQL_FETCH_FIRST_SYSTEM
;
1092 while ((sql_ret
= SQLDataSources (hEnv
, dirn
,
1093 (SQLCHAR
*)dsn
, sizeof(dsn
), &sizedsn
,
1094 (SQLCHAR
*)desc
, sizeof(desc
), &sizedesc
)) == SQL_SUCCESS
1095 || sql_ret
== SQL_SUCCESS_WITH_INFO
)
1097 /* FIXME Do some proper handling of the SUCCESS_WITH_INFO */
1098 dirn
= SQL_FETCH_NEXT
;
1099 if (sizedsn
== lstrlenA(dsn
) && sizedesc
== lstrlenA(desc
))
1102 if ((reg_ret
= RegCreateKeyExA (hODBC
, dsn
, 0,
1103 NULL
, REG_OPTION_NON_VOLATILE
,
1104 KEY_ALL_ACCESS
, NULL
, &hDSN
, NULL
))
1107 static const char DRIVERKEY
[] = "Driver";
1108 if ((reg_ret
= RegQueryValueExA (hDSN
, DRIVERKEY
,
1109 NULL
, NULL
, NULL
, NULL
))
1110 == ERROR_FILE_NOT_FOUND
)
1112 if ((reg_ret
= RegSetValueExA (hDSN
, DRIVERKEY
, 0,
1113 REG_SZ
, (LPBYTE
)desc
, sizedesc
)) != ERROR_SUCCESS
)
1115 TRACE ("Error %d replicating description of "
1116 "%s(%s)\n", reg_ret
, dsn
, desc
);
1120 else if (reg_ret
!= ERROR_SUCCESS
)
1122 TRACE ("Error %d checking for description of %s\n",
1126 if ((reg_ret
= RegCloseKey (hDSN
)) != ERROR_SUCCESS
)
1128 TRACE ("Error %d closing %s DSN key %s\n",
1129 reg_ret
, which
, dsn
);
1134 TRACE ("Error %d opening %s DSN key %s\n",
1135 reg_ret
, which
, dsn
);
1141 WARN ("Unusually long %s data source name %s (%s) not "
1142 "replicated\n", which
, dsn
, desc
);
1146 if (sql_ret
!= SQL_NO_DATA
)
1148 TRACE ("Error %d enumerating %s datasources\n",
1149 (int)sql_ret
, which
);
1152 if ((reg_ret
= RegCloseKey (hODBC
)) != ERROR_SUCCESS
)
1154 TRACE ("Error %d closing %s ODBC.INI registry key\n", reg_ret
,
1160 TRACE ("Error %d creating/opening %s ODBC.INI registry key\n",
1165 WARN ("May not have replicated all %s ODBC DSNs to the registry\n",
1170 /***********************************************************************
1171 * ODBC_ReplicateToRegistry
1177 * Unfortunately some of the functions that Windows documents as being part
1178 * of the ODBC API it implements directly during compilation or something
1179 * in terms of registry access functions.
1180 * e.g. SQLGetInstalledDrivers queries the list at
1181 * HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC Drivers
1183 * This function is called when the driver manager is loaded and is used
1184 * to replicate the appropriate details into the Wine registry
1187 static void ODBC_ReplicateToRegistry (void)
1192 if ((sql_ret
= SQLAllocEnv(&hEnv
)) == SQL_SUCCESS
)
1194 ODBC_ReplicateODBCInstToRegistry (hEnv
);
1195 ODBC_ReplicateODBCToRegistry (FALSE
/* system dsns */, hEnv
);
1196 ODBC_ReplicateODBCToRegistry (TRUE
/* user dsns */, hEnv
);
1198 if ((sql_ret
= SQLFreeEnv(hEnv
)) != SQL_SUCCESS
)
1200 TRACE ("Error %d freeing the SQL environment.\n", (int)sql_ret
);
1205 TRACE ("Error %d opening an SQL environment.\n", (int)sql_ret
);
1206 WARN ("The external ODBC settings have not been replicated to the"
1207 " Wine registry\n");
1211 /*************************************************************************
1212 * SQLAllocConnect [ODBC32.001]
1214 SQLRETURN WINAPI
SQLAllocConnect(SQLHENV EnvironmentHandle
, SQLHDBC
*ConnectionHandle
)
1218 TRACE("(EnvironmentHandle %p, ConnectionHandle %p)\n", EnvironmentHandle
, ConnectionHandle
);
1220 ret
= sql_funcs
.pSQLAllocConnect(EnvironmentHandle
, ConnectionHandle
);
1221 TRACE("Returning %d, ConnectionHandle %p\n", ret
, *ConnectionHandle
);
1225 /*************************************************************************
1226 * SQLAllocEnv [ODBC32.002]
1228 SQLRETURN WINAPI
SQLAllocEnv(SQLHENV
*EnvironmentHandle
)
1232 TRACE("(EnvironmentHandle %p)\n", EnvironmentHandle
);
1234 ret
= sql_funcs
.pSQLAllocEnv(EnvironmentHandle
);
1235 TRACE("Returning %d, EnvironmentHandle %p\n", ret
, *EnvironmentHandle
);
1239 /*************************************************************************
1240 * SQLAllocHandle [ODBC32.024]
1242 SQLRETURN WINAPI
SQLAllocHandle(SQLSMALLINT HandleType
, SQLHANDLE InputHandle
, SQLHANDLE
*OutputHandle
)
1246 TRACE("(HandleType %d, InputHandle %p, OutputHandle %p)\n", HandleType
, InputHandle
, OutputHandle
);
1248 ret
= sql_funcs
.pSQLAllocHandle(HandleType
, InputHandle
, OutputHandle
);
1249 TRACE("Returning %d, Handle %p\n", ret
, *OutputHandle
);
1253 /*************************************************************************
1254 * SQLAllocStmt [ODBC32.003]
1256 SQLRETURN WINAPI
SQLAllocStmt(SQLHDBC ConnectionHandle
, SQLHSTMT
*StatementHandle
)
1260 TRACE("(ConnectionHandle %p, StatementHandle %p)\n", ConnectionHandle
, StatementHandle
);
1262 ret
= sql_funcs
.pSQLAllocStmt(ConnectionHandle
, StatementHandle
);
1263 TRACE ("Returning %d, StatementHandle %p\n", ret
, *StatementHandle
);
1267 /*************************************************************************
1268 * SQLAllocHandleStd [ODBC32.077]
1270 SQLRETURN WINAPI
SQLAllocHandleStd(SQLSMALLINT HandleType
, SQLHANDLE InputHandle
, SQLHANDLE
*OutputHandle
)
1274 TRACE("(HandleType %d, InputHandle %p, OutputHandle %p)\n", HandleType
, InputHandle
, OutputHandle
);
1276 ret
= sql_funcs
.pSQLAllocHandleStd(HandleType
, InputHandle
, OutputHandle
);
1277 TRACE ("Returning %d, OutputHandle %p\n", ret
, *OutputHandle
);
1281 static const char *debugstr_sqllen( SQLLEN len
)
1284 return wine_dbg_sprintf( "%ld", len
);
1286 return wine_dbg_sprintf( "%d", len
);
1290 /*************************************************************************
1291 * SQLBindCol [ODBC32.004]
1293 SQLRETURN WINAPI
SQLBindCol(SQLHSTMT StatementHandle
, SQLUSMALLINT ColumnNumber
, SQLSMALLINT TargetType
,
1294 SQLPOINTER TargetValue
, SQLLEN BufferLength
, SQLLEN
*StrLen_or_Ind
)
1298 TRACE("(StatementHandle %p, ColumnNumber %d, TargetType %d, TargetValue %p, BufferLength %s, StrLen_or_Ind %p)\n",
1299 StatementHandle
, ColumnNumber
, TargetType
, TargetValue
, debugstr_sqllen(BufferLength
), StrLen_or_Ind
);
1301 ret
= sql_funcs
.pSQLBindCol(StatementHandle
, ColumnNumber
, TargetType
, TargetValue
, BufferLength
, StrLen_or_Ind
);
1302 TRACE ("Returning %d\n", ret
);
1306 static const char *debugstr_sqlulen( SQLULEN len
)
1309 return wine_dbg_sprintf( "%lu", len
);
1311 return wine_dbg_sprintf( "%u", len
);
1315 /*************************************************************************
1316 * SQLBindParam [ODBC32.025]
1318 SQLRETURN WINAPI
SQLBindParam(SQLHSTMT StatementHandle
, SQLUSMALLINT ParameterNumber
, SQLSMALLINT ValueType
,
1319 SQLSMALLINT ParameterType
, SQLULEN LengthPrecision
, SQLSMALLINT ParameterScale
,
1320 SQLPOINTER ParameterValue
, SQLLEN
*StrLen_or_Ind
)
1324 TRACE("(StatementHandle %p, ParameterNumber %d, ValueType %d, ParameterType %d, LengthPrecision %s,"
1325 " ParameterScale %d, ParameterValue %p, StrLen_or_Ind %p)\n", StatementHandle
, ParameterNumber
, ValueType
,
1326 ParameterType
, debugstr_sqlulen(LengthPrecision
), ParameterScale
, ParameterValue
, StrLen_or_Ind
);
1328 ret
= sql_funcs
.pSQLBindParam(StatementHandle
, ParameterNumber
, ValueType
, ParameterType
, LengthPrecision
, ParameterScale
,
1329 ParameterValue
, StrLen_or_Ind
);
1330 TRACE ("Returning %d\n", ret
);
1334 /*************************************************************************
1335 * SQLCancel [ODBC32.005]
1337 SQLRETURN WINAPI
SQLCancel(SQLHSTMT StatementHandle
)
1341 TRACE("(StatementHandle %p)\n", StatementHandle
);
1343 ret
= sql_funcs
.pSQLCancel(StatementHandle
);
1344 TRACE("Returning %d\n", ret
);
1348 /*************************************************************************
1349 * SQLCloseCursor [ODBC32.026]
1351 SQLRETURN WINAPI
SQLCloseCursor(SQLHSTMT StatementHandle
)
1355 TRACE("(StatementHandle %p)\n", StatementHandle
);
1357 ret
= sql_funcs
.pSQLCloseCursor(StatementHandle
);
1358 TRACE("Returning %d\n", ret
);
1362 /*************************************************************************
1363 * SQLColAttribute [ODBC32.027]
1365 SQLRETURN WINAPI
SQLColAttribute(SQLHSTMT StatementHandle
, SQLUSMALLINT ColumnNumber
,
1366 SQLUSMALLINT FieldIdentifier
, SQLPOINTER CharacterAttribute
,
1367 SQLSMALLINT BufferLength
, SQLSMALLINT
*StringLength
,
1368 SQLLEN
*NumericAttribute
)
1372 TRACE("(StatementHandle %p, ColumnNumber %d, FieldIdentifier %d, CharacterAttribute %p, BufferLength %d,"
1373 " StringLength %p, NumericAttribute %p)\n", StatementHandle
, ColumnNumber
, FieldIdentifier
,
1374 CharacterAttribute
, BufferLength
, StringLength
, NumericAttribute
);
1376 ret
= sql_funcs
.pSQLColAttribute(StatementHandle
, ColumnNumber
, FieldIdentifier
, CharacterAttribute
, BufferLength
,
1377 StringLength
, NumericAttribute
);
1378 TRACE("Returning %d\n", ret
);
1382 /*************************************************************************
1383 * SQLColumns [ODBC32.040]
1385 SQLRETURN WINAPI
SQLColumns(SQLHSTMT StatementHandle
, SQLCHAR
*CatalogName
, SQLSMALLINT NameLength1
,
1386 SQLCHAR
*SchemaName
, SQLSMALLINT NameLength2
, SQLCHAR
*TableName
,
1387 SQLSMALLINT NameLength3
, SQLCHAR
*ColumnName
, SQLSMALLINT NameLength4
)
1391 TRACE("(StatementHandle %p, CatalogName %s, NameLength1 %d, SchemaName %s, NameLength2 %d, TableName %s,"
1392 " NameLength3 %d, ColumnName %s, NameLength4 %d)\n", StatementHandle
,
1393 debugstr_an((const char *)CatalogName
, NameLength1
), NameLength1
,
1394 debugstr_an((const char *)SchemaName
, NameLength2
), NameLength2
,
1395 debugstr_an((const char *)TableName
, NameLength3
), NameLength3
,
1396 debugstr_an((const char *)ColumnName
, NameLength4
), NameLength4
);
1398 ret
= sql_funcs
.pSQLColumns(StatementHandle
, CatalogName
, NameLength1
, SchemaName
, NameLength2
, TableName
,
1399 NameLength3
, ColumnName
, NameLength4
);
1400 TRACE("Returning %d\n", ret
);
1404 /*************************************************************************
1405 * SQLConnect [ODBC32.007]
1407 SQLRETURN WINAPI
SQLConnect(SQLHDBC ConnectionHandle
, SQLCHAR
*ServerName
, SQLSMALLINT NameLength1
,
1408 SQLCHAR
*UserName
, SQLSMALLINT NameLength2
, SQLCHAR
*Authentication
,
1409 SQLSMALLINT NameLength3
)
1413 TRACE("(ConnectionHandle %p, ServerName %s, NameLength1 %d, UserName %s, NameLength2 %d, Authentication %s,"
1414 " NameLength3 %d)\n", ConnectionHandle
,
1415 debugstr_an((const char *)ServerName
, NameLength1
), NameLength1
,
1416 debugstr_an((const char *)UserName
, NameLength2
), NameLength2
,
1417 debugstr_an((const char *)Authentication
, NameLength3
), NameLength3
);
1419 ret
= sql_funcs
.pSQLConnect(ConnectionHandle
, ServerName
, NameLength1
, UserName
, NameLength2
, Authentication
, NameLength3
);
1420 TRACE("Returning %d\n", ret
);
1424 /*************************************************************************
1425 * SQLCopyDesc [ODBC32.028]
1427 SQLRETURN WINAPI
SQLCopyDesc(SQLHDESC SourceDescHandle
, SQLHDESC TargetDescHandle
)
1431 TRACE("(SourceDescHandle %p, TargetDescHandle %p)\n", SourceDescHandle
, TargetDescHandle
);
1433 ret
= sql_funcs
.pSQLCopyDesc(SourceDescHandle
, TargetDescHandle
);
1434 TRACE("Returning %d\n", ret
);
1438 /*************************************************************************
1439 * SQLDataSources [ODBC32.057]
1441 SQLRETURN WINAPI
SQLDataSources(SQLHENV EnvironmentHandle
, SQLUSMALLINT Direction
, SQLCHAR
*ServerName
,
1442 SQLSMALLINT BufferLength1
, SQLSMALLINT
*NameLength1
, SQLCHAR
*Description
,
1443 SQLSMALLINT BufferLength2
, SQLSMALLINT
*NameLength2
)
1447 TRACE("(EnvironmentHandle %p, Direction %d, ServerName %p, BufferLength1 %d, NameLength1 %p, Description %p,"
1448 " BufferLength2 %d, NameLength2 %p)\n", EnvironmentHandle
, Direction
, ServerName
, BufferLength1
,
1449 NameLength1
, Description
, BufferLength2
, NameLength2
);
1451 ret
= sql_funcs
.pSQLDataSources(EnvironmentHandle
, Direction
, ServerName
, BufferLength1
, NameLength1
, Description
,
1452 BufferLength2
, NameLength2
);
1453 if (ret
>= 0 && TRACE_ON(odbc
))
1455 if (ServerName
&& NameLength1
&& *NameLength1
> 0)
1456 TRACE(" DataSource %s", debugstr_an((const char *)ServerName
, *NameLength1
));
1457 if (Description
&& NameLength2
&& *NameLength2
> 0)
1458 TRACE(" Description %s", debugstr_an((const char *)Description
, *NameLength2
));
1462 TRACE("Returning %d\n", ret
);
1466 SQLRETURN WINAPI
SQLDataSourcesA(SQLHENV EnvironmentHandle
, SQLUSMALLINT Direction
, SQLCHAR
*ServerName
,
1467 SQLSMALLINT BufferLength1
, SQLSMALLINT
*NameLength1
, SQLCHAR
*Description
,
1468 SQLSMALLINT BufferLength2
, SQLSMALLINT
*NameLength2
)
1472 TRACE("(EnvironmentHandle %p, Direction %d, ServerName %p, BufferLength1 %d, NameLength1 %p, Description %p,"
1473 " BufferLength2 %d, NameLength2 %p)\n", EnvironmentHandle
, Direction
, ServerName
, BufferLength1
,
1474 NameLength1
, Description
, BufferLength2
, NameLength2
);
1476 ret
= sql_funcs
.pSQLDataSourcesA(EnvironmentHandle
, Direction
, ServerName
, BufferLength1
, NameLength1
, Description
,
1477 BufferLength2
, NameLength2
);
1480 if (ServerName
&& NameLength1
&& *NameLength1
> 0)
1481 TRACE(" DataSource %s", debugstr_an((const char *)ServerName
, *NameLength1
));
1482 if (Description
&& NameLength2
&& *NameLength2
> 0)
1483 TRACE(" Description %s", debugstr_an((const char *)Description
, *NameLength2
));
1487 TRACE("Returning %d\n", ret
);
1491 /*************************************************************************
1492 * SQLDescribeCol [ODBC32.008]
1494 SQLRETURN WINAPI
SQLDescribeCol(SQLHSTMT StatementHandle
, SQLUSMALLINT ColumnNumber
, SQLCHAR
*ColumnName
,
1495 SQLSMALLINT BufferLength
, SQLSMALLINT
*NameLength
, SQLSMALLINT
*DataType
,
1496 SQLULEN
*ColumnSize
, SQLSMALLINT
*DecimalDigits
, SQLSMALLINT
*Nullable
)
1501 TRACE("(StatementHandle %p, ColumnNumber %d, ColumnName %p, BufferLength %d, NameLength %p, DataType %p,"
1502 " ColumnSize %p, DecimalDigits %p, Nullable %p)\n", StatementHandle
, ColumnNumber
, ColumnName
,
1503 BufferLength
, NameLength
, DataType
, ColumnSize
, DecimalDigits
, Nullable
);
1505 if (!NameLength
) NameLength
= &dummy
; /* workaround for drivers that don't accept NULL NameLength */
1507 ret
= sql_funcs
.pSQLDescribeCol(StatementHandle
, ColumnNumber
, ColumnName
, BufferLength
, NameLength
, DataType
, ColumnSize
,
1508 DecimalDigits
, Nullable
);
1511 if (ColumnName
&& NameLength
) TRACE(" ColumnName %s\n", debugstr_an((const char *)ColumnName
, *NameLength
));
1512 if (DataType
) TRACE(" DataType %d\n", *DataType
);
1513 if (ColumnSize
) TRACE(" ColumnSize %s\n", debugstr_sqlulen(*ColumnSize
));
1514 if (DecimalDigits
) TRACE(" DecimalDigits %d\n", *DecimalDigits
);
1515 if (Nullable
) TRACE(" Nullable %d\n", *Nullable
);
1518 TRACE("Returning %d\n", ret
);
1522 /*************************************************************************
1523 * SQLDisconnect [ODBC32.009]
1525 SQLRETURN WINAPI
SQLDisconnect(SQLHDBC ConnectionHandle
)
1529 TRACE("(ConnectionHandle %p)\n", ConnectionHandle
);
1531 ret
= sql_funcs
.pSQLDisconnect(ConnectionHandle
);
1532 TRACE("Returning %d\n", ret
);
1536 /*************************************************************************
1537 * SQLEndTran [ODBC32.029]
1539 SQLRETURN WINAPI
SQLEndTran(SQLSMALLINT HandleType
, SQLHANDLE Handle
, SQLSMALLINT CompletionType
)
1543 TRACE("(HandleType %d, Handle %p, CompletionType %d)\n", HandleType
, Handle
, CompletionType
);
1545 ret
= sql_funcs
.pSQLEndTran(HandleType
, Handle
, CompletionType
);
1546 TRACE("Returning %d\n", ret
);
1550 /*************************************************************************
1551 * SQLError [ODBC32.010]
1553 SQLRETURN WINAPI
SQLError(SQLHENV EnvironmentHandle
, SQLHDBC ConnectionHandle
, SQLHSTMT StatementHandle
,
1554 SQLCHAR
*Sqlstate
, SQLINTEGER
*NativeError
, SQLCHAR
*MessageText
,
1555 SQLSMALLINT BufferLength
, SQLSMALLINT
*TextLength
)
1559 TRACE("(EnvironmentHandle %p, ConnectionHandle %p, StatementHandle %p, Sqlstate %p, NativeError %p,"
1560 " MessageText %p, BufferLength %d, TextLength %p)\n", EnvironmentHandle
, ConnectionHandle
,
1561 StatementHandle
, Sqlstate
, NativeError
, MessageText
, BufferLength
, TextLength
);
1563 ret
= sql_funcs
.pSQLError(EnvironmentHandle
, ConnectionHandle
, StatementHandle
, Sqlstate
, NativeError
, MessageText
,
1564 BufferLength
, TextLength
);
1566 if (ret
== SQL_SUCCESS
)
1568 TRACE(" SQLState %s\n", debugstr_an((const char *)Sqlstate
, 5));
1569 TRACE(" Error %d\n", *NativeError
);
1570 TRACE(" MessageText %s\n", debugstr_an((const char *)MessageText
, *TextLength
));
1573 TRACE("Returning %d\n", ret
);
1577 /*************************************************************************
1578 * SQLExecDirect [ODBC32.011]
1580 SQLRETURN WINAPI
SQLExecDirect(SQLHSTMT StatementHandle
, SQLCHAR
*StatementText
, SQLINTEGER TextLength
)
1584 TRACE("(StatementHandle %p, StatementText %s, TextLength %d)\n", StatementHandle
,
1585 debugstr_an((const char *)StatementText
, TextLength
), TextLength
);
1587 ret
= sql_funcs
.pSQLExecDirect(StatementHandle
, StatementText
, TextLength
);
1588 TRACE("Returning %d\n", ret
);
1592 /*************************************************************************
1593 * SQLExecute [ODBC32.012]
1595 SQLRETURN WINAPI
SQLExecute(SQLHSTMT StatementHandle
)
1599 TRACE("(StatementHandle %p)\n", StatementHandle
);
1601 ret
= sql_funcs
.pSQLExecute(StatementHandle
);
1602 TRACE("Returning %d\n", ret
);
1606 /*************************************************************************
1607 * SQLFetch [ODBC32.013]
1609 SQLRETURN WINAPI
SQLFetch(SQLHSTMT StatementHandle
)
1613 TRACE("(StatementHandle %p)\n", StatementHandle
);
1615 ret
= sql_funcs
.pSQLFetch(StatementHandle
);
1616 TRACE("Returning %d\n", ret
);
1620 /*************************************************************************
1621 * SQLFetchScroll [ODBC32.030]
1623 SQLRETURN WINAPI
SQLFetchScroll(SQLHSTMT StatementHandle
, SQLSMALLINT FetchOrientation
, SQLLEN FetchOffset
)
1627 TRACE("(StatementHandle %p, FetchOrientation %d, FetchOffset %s)\n", StatementHandle
, FetchOrientation
,
1628 debugstr_sqllen(FetchOffset
));
1630 ret
= sql_funcs
.pSQLFetchScroll(StatementHandle
, FetchOrientation
, FetchOffset
);
1631 TRACE("Returning %d\n", ret
);
1635 /*************************************************************************
1636 * SQLFreeConnect [ODBC32.014]
1638 SQLRETURN WINAPI
SQLFreeConnect(SQLHDBC ConnectionHandle
)
1642 TRACE("(ConnectionHandle %p)\n", ConnectionHandle
);
1644 ret
= sql_funcs
.pSQLFreeConnect(ConnectionHandle
);
1645 TRACE("Returning %d\n", ret
);
1649 /*************************************************************************
1650 * SQLFreeEnv [ODBC32.015]
1652 SQLRETURN WINAPI
SQLFreeEnv(SQLHENV EnvironmentHandle
)
1656 TRACE("(EnvironmentHandle %p)\n", EnvironmentHandle
);
1658 ret
= sql_funcs
.pSQLFreeEnv(EnvironmentHandle
);
1659 TRACE("Returning %d\n", ret
);
1663 /*************************************************************************
1664 * SQLFreeHandle [ODBC32.031]
1666 SQLRETURN WINAPI
SQLFreeHandle(SQLSMALLINT HandleType
, SQLHANDLE Handle
)
1670 TRACE("(HandleType %d, Handle %p)\n", HandleType
, Handle
);
1672 ret
= sql_funcs
.pSQLFreeHandle(HandleType
, Handle
);
1673 TRACE ("Returning %d\n", ret
);
1677 /*************************************************************************
1678 * SQLFreeStmt [ODBC32.016]
1680 SQLRETURN WINAPI
SQLFreeStmt(SQLHSTMT StatementHandle
, SQLUSMALLINT Option
)
1684 TRACE("(StatementHandle %p, Option %d)\n", StatementHandle
, Option
);
1686 ret
= sql_funcs
.pSQLFreeStmt(StatementHandle
, Option
);
1687 TRACE("Returning %d\n", ret
);
1691 /*************************************************************************
1692 * SQLGetConnectAttr [ODBC32.032]
1694 SQLRETURN WINAPI
SQLGetConnectAttr(SQLHDBC ConnectionHandle
, SQLINTEGER Attribute
, SQLPOINTER Value
,
1695 SQLINTEGER BufferLength
, SQLINTEGER
*StringLength
)
1699 TRACE("(ConnectionHandle %p, Attribute %d, Value %p, BufferLength %d, StringLength %p)\n", ConnectionHandle
,
1700 Attribute
, Value
, BufferLength
, StringLength
);
1702 ret
= sql_funcs
.pSQLGetConnectAttr(ConnectionHandle
, Attribute
, Value
, BufferLength
, StringLength
);
1703 TRACE("Returning %d\n", ret
);
1707 /*************************************************************************
1708 * SQLGetConnectOption [ODBC32.042]
1710 SQLRETURN WINAPI
SQLGetConnectOption(SQLHDBC ConnectionHandle
, SQLUSMALLINT Option
, SQLPOINTER Value
)
1714 TRACE("(ConnectionHandle %p, Option %d, Value %p)\n", ConnectionHandle
, Option
, Value
);
1716 ret
= sql_funcs
.pSQLGetConnectOption(ConnectionHandle
, Option
, Value
);
1717 TRACE("Returning %d\n", ret
);
1721 /*************************************************************************
1722 * SQLGetCursorName [ODBC32.017]
1724 SQLRETURN WINAPI
SQLGetCursorName(SQLHSTMT StatementHandle
, SQLCHAR
*CursorName
, SQLSMALLINT BufferLength
,
1725 SQLSMALLINT
*NameLength
)
1729 TRACE("(StatementHandle %p, CursorName %p, BufferLength %d, NameLength %p)\n", StatementHandle
, CursorName
,
1730 BufferLength
, NameLength
);
1732 ret
= sql_funcs
.pSQLGetCursorName(StatementHandle
, CursorName
, BufferLength
, NameLength
);
1733 TRACE("Returning %d\n", ret
);
1737 /*************************************************************************
1738 * SQLGetData [ODBC32.043]
1740 SQLRETURN WINAPI
SQLGetData(SQLHSTMT StatementHandle
, SQLUSMALLINT ColumnNumber
, SQLSMALLINT TargetType
,
1741 SQLPOINTER TargetValue
, SQLLEN BufferLength
, SQLLEN
*StrLen_or_Ind
)
1745 TRACE("(StatementHandle %p, ColumnNumber %d, TargetType %d, TargetValue %p, BufferLength %s, StrLen_or_Ind %p)\n",
1746 StatementHandle
, ColumnNumber
, TargetType
, TargetValue
, debugstr_sqllen(BufferLength
), StrLen_or_Ind
);
1748 ret
= sql_funcs
.pSQLGetData(StatementHandle
, ColumnNumber
, TargetType
, TargetValue
, BufferLength
, StrLen_or_Ind
);
1749 TRACE("Returning %d\n", ret
);
1753 /*************************************************************************
1754 * SQLGetDescField [ODBC32.033]
1756 SQLRETURN WINAPI
SQLGetDescField(SQLHDESC DescriptorHandle
, SQLSMALLINT RecNumber
, SQLSMALLINT FieldIdentifier
,
1757 SQLPOINTER Value
, SQLINTEGER BufferLength
, SQLINTEGER
*StringLength
)
1761 TRACE("(DescriptorHandle %p, RecNumber %d, FieldIdentifier %d, Value %p, BufferLength %d, StringLength %p)\n",
1762 DescriptorHandle
, RecNumber
, FieldIdentifier
, Value
, BufferLength
, StringLength
);
1764 ret
= sql_funcs
.pSQLGetDescField(DescriptorHandle
, RecNumber
, FieldIdentifier
, Value
, BufferLength
, StringLength
);
1765 TRACE("Returning %d\n", ret
);
1769 /*************************************************************************
1770 * SQLGetDescRec [ODBC32.034]
1772 SQLRETURN WINAPI
SQLGetDescRec(SQLHDESC DescriptorHandle
, SQLSMALLINT RecNumber
, SQLCHAR
*Name
,
1773 SQLSMALLINT BufferLength
, SQLSMALLINT
*StringLength
, SQLSMALLINT
*Type
,
1774 SQLSMALLINT
*SubType
, SQLLEN
*Length
, SQLSMALLINT
*Precision
,
1775 SQLSMALLINT
*Scale
, SQLSMALLINT
*Nullable
)
1779 TRACE("(DescriptorHandle %p, RecNumber %d, Name %p, BufferLength %d, StringLength %p, Type %p, SubType %p,"
1780 " Length %p, Precision %p, Scale %p, Nullable %p)\n", DescriptorHandle
, RecNumber
, Name
, BufferLength
,
1781 StringLength
, Type
, SubType
, Length
, Precision
, Scale
, Nullable
);
1783 ret
= sql_funcs
.pSQLGetDescRec(DescriptorHandle
, RecNumber
, Name
, BufferLength
, StringLength
, Type
, SubType
, Length
,
1784 Precision
, Scale
, Nullable
);
1785 TRACE("Returning %d\n", ret
);
1789 /*************************************************************************
1790 * SQLGetDiagField [ODBC32.035]
1792 SQLRETURN WINAPI
SQLGetDiagField(SQLSMALLINT HandleType
, SQLHANDLE Handle
, SQLSMALLINT RecNumber
,
1793 SQLSMALLINT DiagIdentifier
, SQLPOINTER DiagInfo
, SQLSMALLINT BufferLength
,
1794 SQLSMALLINT
*StringLength
)
1798 TRACE("(HandleType %d, Handle %p, RecNumber %d, DiagIdentifier %d, DiagInfo %p, BufferLength %d,"
1799 " StringLength %p)\n", HandleType
, Handle
, RecNumber
, DiagIdentifier
, DiagInfo
, BufferLength
, StringLength
);
1801 ret
= sql_funcs
.pSQLGetDiagField(HandleType
, Handle
, RecNumber
, DiagIdentifier
, DiagInfo
, BufferLength
, StringLength
);
1802 TRACE("Returning %d\n", ret
);
1806 /*************************************************************************
1807 * SQLGetDiagRec [ODBC32.036]
1809 SQLRETURN WINAPI
SQLGetDiagRec(SQLSMALLINT HandleType
, SQLHANDLE Handle
, SQLSMALLINT RecNumber
,
1810 SQLCHAR
*Sqlstate
, SQLINTEGER
*NativeError
, SQLCHAR
*MessageText
,
1811 SQLSMALLINT BufferLength
, SQLSMALLINT
*TextLength
)
1815 TRACE("(HandleType %d, Handle %p, RecNumber %d, Sqlstate %p, NativeError %p, MessageText %p, BufferLength %d,"
1816 " TextLength %p)\n", HandleType
, Handle
, RecNumber
, Sqlstate
, NativeError
, MessageText
, BufferLength
,
1819 ret
= sql_funcs
.pSQLGetDiagRec(HandleType
, Handle
, RecNumber
, Sqlstate
, NativeError
, MessageText
, BufferLength
, TextLength
);
1820 TRACE("Returning %d\n", ret
);
1824 /*************************************************************************
1825 * SQLGetEnvAttr [ODBC32.037]
1827 SQLRETURN WINAPI
SQLGetEnvAttr(SQLHENV EnvironmentHandle
, SQLINTEGER Attribute
, SQLPOINTER Value
,
1828 SQLINTEGER BufferLength
, SQLINTEGER
*StringLength
)
1832 TRACE("(EnvironmentHandle %p, Attribute %d, Value %p, BufferLength %d, StringLength %p)\n",
1833 EnvironmentHandle
, Attribute
, Value
, BufferLength
, StringLength
);
1835 ret
= sql_funcs
.pSQLGetEnvAttr(EnvironmentHandle
, Attribute
, Value
, BufferLength
, StringLength
);
1836 TRACE("Returning %d\n", ret
);
1840 /*************************************************************************
1841 * SQLGetFunctions [ODBC32.044]
1843 SQLRETURN WINAPI
SQLGetFunctions(SQLHDBC ConnectionHandle
, SQLUSMALLINT FunctionId
, SQLUSMALLINT
*Supported
)
1847 TRACE("(ConnectionHandle %p, FunctionId %d, Supported %p)\n", ConnectionHandle
, FunctionId
, Supported
);
1849 ret
= sql_funcs
.pSQLGetFunctions(ConnectionHandle
, FunctionId
, Supported
);
1850 TRACE("Returning %d\n", ret
);
1854 /*************************************************************************
1855 * SQLGetInfo [ODBC32.045]
1857 SQLRETURN WINAPI
SQLGetInfo(SQLHDBC ConnectionHandle
, SQLUSMALLINT InfoType
, SQLPOINTER InfoValue
,
1858 SQLSMALLINT BufferLength
, SQLSMALLINT
*StringLength
)
1862 TRACE("(ConnectionHandle, %p, InfoType %d, InfoValue %p, BufferLength %d, StringLength %p)\n", ConnectionHandle
,
1863 InfoType
, InfoValue
, BufferLength
, StringLength
);
1867 WARN("Unexpected NULL InfoValue address\n");
1871 ret
= sql_funcs
.pSQLGetInfo(ConnectionHandle
, InfoType
, InfoValue
, BufferLength
, StringLength
);
1872 TRACE("Returning %d\n", ret
);
1876 /*************************************************************************
1877 * SQLGetStmtAttr [ODBC32.038]
1879 SQLRETURN WINAPI
SQLGetStmtAttr(SQLHSTMT StatementHandle
, SQLINTEGER Attribute
, SQLPOINTER Value
,
1880 SQLINTEGER BufferLength
, SQLINTEGER
*StringLength
)
1884 TRACE("(StatementHandle %p, Attribute %d, Value %p, BufferLength %d, StringLength %p)\n", StatementHandle
,
1885 Attribute
, Value
, BufferLength
, StringLength
);
1889 WARN("Unexpected NULL Value return address\n");
1893 ret
= sql_funcs
.pSQLGetStmtAttr(StatementHandle
, Attribute
, Value
, BufferLength
, StringLength
);
1894 TRACE("Returning %d\n", ret
);
1898 /*************************************************************************
1899 * SQLGetStmtOption [ODBC32.046]
1901 SQLRETURN WINAPI
SQLGetStmtOption(SQLHSTMT StatementHandle
, SQLUSMALLINT Option
, SQLPOINTER Value
)
1905 TRACE("(StatementHandle %p, Option %d, Value %p)\n", StatementHandle
, Option
, Value
);
1907 ret
= sql_funcs
.pSQLGetStmtOption(StatementHandle
, Option
, Value
);
1908 TRACE("Returning %d\n", ret
);
1912 /*************************************************************************
1913 * SQLGetTypeInfo [ODBC32.047]
1915 SQLRETURN WINAPI
SQLGetTypeInfo(SQLHSTMT StatementHandle
, SQLSMALLINT DataType
)
1919 TRACE("(StatementHandle %p, DataType %d)\n", StatementHandle
, DataType
);
1921 ret
= sql_funcs
.pSQLGetTypeInfo(StatementHandle
, DataType
);
1922 TRACE("Returning %d\n", ret
);
1926 /*************************************************************************
1927 * SQLNumResultCols [ODBC32.018]
1929 SQLRETURN WINAPI
SQLNumResultCols(SQLHSTMT StatementHandle
, SQLSMALLINT
*ColumnCount
)
1933 TRACE("(StatementHandle %p, ColumnCount %p)\n", StatementHandle
, ColumnCount
);
1935 ret
= sql_funcs
.pSQLNumResultCols(StatementHandle
, ColumnCount
);
1936 TRACE("Returning %d ColumnCount %d\n", ret
, *ColumnCount
);
1940 /*************************************************************************
1941 * SQLParamData [ODBC32.048]
1943 SQLRETURN WINAPI
SQLParamData(SQLHSTMT StatementHandle
, SQLPOINTER
*Value
)
1947 TRACE("(StatementHandle %p, Value %p)\n", StatementHandle
, Value
);
1949 ret
= sql_funcs
.pSQLParamData(StatementHandle
, Value
);
1950 TRACE("Returning %d\n", ret
);
1954 /*************************************************************************
1955 * SQLPrepare [ODBC32.019]
1957 SQLRETURN WINAPI
SQLPrepare(SQLHSTMT StatementHandle
, SQLCHAR
*StatementText
, SQLINTEGER TextLength
)
1961 TRACE("(StatementHandle %p, StatementText %s, TextLength %d)\n", StatementHandle
,
1962 debugstr_an((const char *)StatementText
, TextLength
), TextLength
);
1964 ret
= sql_funcs
.pSQLPrepare(StatementHandle
, StatementText
, TextLength
);
1965 TRACE("Returning %d\n", ret
);
1969 /*************************************************************************
1970 * SQLPutData [ODBC32.049]
1972 SQLRETURN WINAPI
SQLPutData(SQLHSTMT StatementHandle
, SQLPOINTER Data
, SQLLEN StrLen_or_Ind
)
1976 TRACE("(StatementHandle %p, Data %p, StrLen_or_Ind %s)\n", StatementHandle
, Data
, debugstr_sqllen(StrLen_or_Ind
));
1978 ret
= sql_funcs
.pSQLPutData(StatementHandle
, Data
, StrLen_or_Ind
);
1979 TRACE("Returning %d\n", ret
);
1983 /*************************************************************************
1984 * SQLRowCount [ODBC32.020]
1986 SQLRETURN WINAPI
SQLRowCount(SQLHSTMT StatementHandle
, SQLLEN
*RowCount
)
1990 TRACE("(StatementHandle %p, RowCount %p)\n", StatementHandle
, RowCount
);
1992 ret
= sql_funcs
.pSQLRowCount(StatementHandle
, RowCount
);
1993 if (ret
== SQL_SUCCESS
&& RowCount
) TRACE(" RowCount %s\n", debugstr_sqllen(*RowCount
));
1994 TRACE("Returning %d\n", ret
);
1998 /*************************************************************************
1999 * SQLSetConnectAttr [ODBC32.039]
2001 SQLRETURN WINAPI
SQLSetConnectAttr(SQLHDBC ConnectionHandle
, SQLINTEGER Attribute
, SQLPOINTER Value
,
2002 SQLINTEGER StringLength
)
2006 TRACE("(ConnectionHandle %p, Attribute %d, Value %p, StringLength %d)\n", ConnectionHandle
, Attribute
, Value
,
2009 ret
= sql_funcs
.pSQLSetConnectAttr(ConnectionHandle
, Attribute
, Value
, StringLength
);
2010 TRACE("Returning %d\n", ret
);
2014 /*************************************************************************
2015 * SQLSetConnectOption [ODBC32.050]
2017 SQLRETURN WINAPI
SQLSetConnectOption(SQLHDBC ConnectionHandle
, SQLUSMALLINT Option
, SQLULEN Value
)
2021 TRACE("(ConnectionHandle %p, Option %d, Value %s)\n", ConnectionHandle
, Option
, debugstr_sqlulen(Value
));
2023 ret
= sql_funcs
.pSQLSetConnectOption(ConnectionHandle
, Option
, Value
);
2024 TRACE("Returning %d\n", ret
);
2028 /*************************************************************************
2029 * SQLSetCursorName [ODBC32.021]
2031 SQLRETURN WINAPI
SQLSetCursorName(SQLHSTMT StatementHandle
, SQLCHAR
*CursorName
, SQLSMALLINT NameLength
)
2035 TRACE("(StatementHandle %p, CursorName %s, NameLength %d)\n", StatementHandle
,
2036 debugstr_an((const char *)CursorName
, NameLength
), NameLength
);
2038 ret
= sql_funcs
.pSQLSetCursorName(StatementHandle
, CursorName
, NameLength
);
2039 TRACE("Returning %d\n", ret
);
2043 /*************************************************************************
2044 * SQLSetDescField [ODBC32.073]
2046 SQLRETURN WINAPI
SQLSetDescField(SQLHDESC DescriptorHandle
, SQLSMALLINT RecNumber
, SQLSMALLINT FieldIdentifier
,
2047 SQLPOINTER Value
, SQLINTEGER BufferLength
)
2051 TRACE("(DescriptorHandle %p, RecNumber %d, FieldIdentifier %d, Value %p, BufferLength %d)\n", DescriptorHandle
,
2052 RecNumber
, FieldIdentifier
, Value
, BufferLength
);
2054 ret
= sql_funcs
.pSQLSetDescField(DescriptorHandle
, RecNumber
, FieldIdentifier
, Value
, BufferLength
);
2055 TRACE("Returning %d\n", ret
);
2059 /*************************************************************************
2060 * SQLSetDescRec [ODBC32.074]
2062 SQLRETURN WINAPI
SQLSetDescRec(SQLHDESC DescriptorHandle
, SQLSMALLINT RecNumber
, SQLSMALLINT Type
,
2063 SQLSMALLINT SubType
, SQLLEN Length
, SQLSMALLINT Precision
, SQLSMALLINT Scale
,
2064 SQLPOINTER Data
, SQLLEN
*StringLength
, SQLLEN
*Indicator
)
2068 TRACE("(DescriptorHandle %p, RecNumber %d, Type %d, SubType %d, Length %s, Precision %d, Scale %d, Data %p,"
2069 " StringLength %p, Indicator %p)\n", DescriptorHandle
, RecNumber
, Type
, SubType
, debugstr_sqllen(Length
),
2070 Precision
, Scale
, Data
, StringLength
, Indicator
);
2072 ret
= sql_funcs
.pSQLSetDescRec(DescriptorHandle
, RecNumber
, Type
, SubType
, Length
, Precision
, Scale
, Data
,
2073 StringLength
, Indicator
);
2074 TRACE("Returning %d\n", ret
);
2078 /*************************************************************************
2079 * SQLSetEnvAttr [ODBC32.075]
2081 SQLRETURN WINAPI
SQLSetEnvAttr(SQLHENV EnvironmentHandle
, SQLINTEGER Attribute
, SQLPOINTER Value
,
2082 SQLINTEGER StringLength
)
2086 TRACE("(EnvironmentHandle %p, Attribute %d, Value %p, StringLength %d)\n", EnvironmentHandle
, Attribute
, Value
,
2089 ret
= sql_funcs
.pSQLSetEnvAttr(EnvironmentHandle
, Attribute
, Value
, StringLength
);
2090 TRACE("Returning %d\n", ret
);
2094 /*************************************************************************
2095 * SQLSetParam [ODBC32.022]
2097 SQLRETURN WINAPI
SQLSetParam(SQLHSTMT StatementHandle
, SQLUSMALLINT ParameterNumber
, SQLSMALLINT ValueType
,
2098 SQLSMALLINT ParameterType
, SQLULEN LengthPrecision
, SQLSMALLINT ParameterScale
,
2099 SQLPOINTER ParameterValue
, SQLLEN
*StrLen_or_Ind
)
2103 TRACE("(StatementHandle %p, ParameterNumber %d, ValueType %d, ParameterType %d, LengthPrecision %s,"
2104 " ParameterScale %d, ParameterValue %p, StrLen_or_Ind %p)\n", StatementHandle
, ParameterNumber
, ValueType
,
2105 ParameterType
, debugstr_sqlulen(LengthPrecision
), ParameterScale
, ParameterValue
, StrLen_or_Ind
);
2107 ret
= sql_funcs
.pSQLSetParam(StatementHandle
, ParameterNumber
, ValueType
, ParameterType
, LengthPrecision
,
2108 ParameterScale
, ParameterValue
, StrLen_or_Ind
);
2109 TRACE("Returning %d\n", ret
);
2113 /*************************************************************************
2114 * SQLSetStmtAttr [ODBC32.076]
2116 SQLRETURN WINAPI
SQLSetStmtAttr(SQLHSTMT StatementHandle
, SQLINTEGER Attribute
, SQLPOINTER Value
,
2117 SQLINTEGER StringLength
)
2121 TRACE("(StatementHandle %p, Attribute %d, Value %p, StringLength %d)\n", StatementHandle
, Attribute
, Value
,
2124 ret
= sql_funcs
.pSQLSetStmtAttr(StatementHandle
, Attribute
, Value
, StringLength
);
2125 TRACE("Returning %d\n", ret
);
2129 /*************************************************************************
2130 * SQLSetStmtOption [ODBC32.051]
2132 SQLRETURN WINAPI
SQLSetStmtOption(SQLHSTMT StatementHandle
, SQLUSMALLINT Option
, SQLULEN Value
)
2136 TRACE("(StatementHandle %p, Option %d, Value %s)\n", StatementHandle
, Option
, debugstr_sqlulen(Value
));
2138 ret
= sql_funcs
.pSQLSetStmtOption(StatementHandle
, Option
, Value
);
2139 TRACE("Returning %d\n", ret
);
2143 /*************************************************************************
2144 * SQLSpecialColumns [ODBC32.052]
2146 SQLRETURN WINAPI
SQLSpecialColumns(SQLHSTMT StatementHandle
, SQLUSMALLINT IdentifierType
, SQLCHAR
*CatalogName
,
2147 SQLSMALLINT NameLength1
, SQLCHAR
*SchemaName
, SQLSMALLINT NameLength2
,
2148 SQLCHAR
*TableName
, SQLSMALLINT NameLength3
, SQLUSMALLINT Scope
,
2149 SQLUSMALLINT Nullable
)
2153 TRACE("(StatementHandle %p, IdentifierType %d, CatalogName %s, NameLength1 %d, SchemaName %s, NameLength2 %d,"
2154 " TableName %s, NameLength3 %d, Scope %d, Nullable %d)\n", StatementHandle
, IdentifierType
,
2155 debugstr_an((const char *)CatalogName
, NameLength1
), NameLength1
,
2156 debugstr_an((const char *)SchemaName
, NameLength2
), NameLength2
,
2157 debugstr_an((const char *)TableName
, NameLength3
), NameLength3
, Scope
, Nullable
);
2159 ret
= sql_funcs
.pSQLSpecialColumns(StatementHandle
, IdentifierType
, CatalogName
, NameLength1
, SchemaName
,
2160 NameLength2
, TableName
, NameLength3
, Scope
, Nullable
);
2161 TRACE("Returning %d\n", ret
);
2165 /*************************************************************************
2166 * SQLStatistics [ODBC32.053]
2168 SQLRETURN WINAPI
SQLStatistics(SQLHSTMT StatementHandle
, SQLCHAR
*CatalogName
, SQLSMALLINT NameLength1
,
2169 SQLCHAR
*SchemaName
, SQLSMALLINT NameLength2
, SQLCHAR
*TableName
,
2170 SQLSMALLINT NameLength3
, SQLUSMALLINT Unique
, SQLUSMALLINT Reserved
)
2174 TRACE("(StatementHandle %p, CatalogName %s, NameLength1 %d SchemaName %s, NameLength2 %d, TableName %s"
2175 " NameLength3 %d, Unique %d, Reserved %d)\n", StatementHandle
,
2176 debugstr_an((const char *)CatalogName
, NameLength1
), NameLength1
,
2177 debugstr_an((const char *)SchemaName
, NameLength2
), NameLength2
,
2178 debugstr_an((const char *)TableName
, NameLength3
), NameLength3
, Unique
, Reserved
);
2180 ret
= sql_funcs
.pSQLStatistics(StatementHandle
, CatalogName
, NameLength1
, SchemaName
, NameLength2
, TableName
,
2181 NameLength3
, Unique
, Reserved
);
2182 TRACE("Returning %d\n", ret
);
2186 /*************************************************************************
2187 * SQLTables [ODBC32.054]
2189 SQLRETURN WINAPI
SQLTables(SQLHSTMT StatementHandle
, SQLCHAR
*CatalogName
, SQLSMALLINT NameLength1
,
2190 SQLCHAR
*SchemaName
, SQLSMALLINT NameLength2
, SQLCHAR
*TableName
,
2191 SQLSMALLINT NameLength3
, SQLCHAR
*TableType
, SQLSMALLINT NameLength4
)
2195 TRACE("(StatementHandle %p, CatalogName %s, NameLength1 %d, SchemaName %s, NameLength2 %d, TableName %s,"
2196 " NameLength3 %d, TableType %s, NameLength4 %d)\n", StatementHandle
,
2197 debugstr_an((const char *)CatalogName
, NameLength1
), NameLength1
,
2198 debugstr_an((const char *)SchemaName
, NameLength2
), NameLength2
,
2199 debugstr_an((const char *)TableName
, NameLength3
), NameLength3
,
2200 debugstr_an((const char *)TableType
, NameLength4
), NameLength4
);
2202 ret
= sql_funcs
.pSQLTables(StatementHandle
, CatalogName
, NameLength1
, SchemaName
, NameLength2
, TableName
, NameLength3
,
2203 TableType
, NameLength4
);
2204 TRACE("Returning %d\n", ret
);
2208 /*************************************************************************
2209 * SQLTransact [ODBC32.023]
2211 SQLRETURN WINAPI
SQLTransact(SQLHENV EnvironmentHandle
, SQLHDBC ConnectionHandle
, SQLUSMALLINT CompletionType
)
2215 TRACE("(EnvironmentHandle %p, ConnectionHandle %p, CompletionType %d)\n", EnvironmentHandle
, ConnectionHandle
,
2218 ret
= sql_funcs
.pSQLTransact(EnvironmentHandle
, ConnectionHandle
, CompletionType
);
2219 TRACE("Returning %d\n", ret
);
2223 /*************************************************************************
2224 * SQLBrowseConnect [ODBC32.055]
2226 SQLRETURN WINAPI
SQLBrowseConnect(SQLHDBC hdbc
, SQLCHAR
*szConnStrIn
, SQLSMALLINT cbConnStrIn
,
2227 SQLCHAR
*szConnStrOut
, SQLSMALLINT cbConnStrOutMax
,
2228 SQLSMALLINT
*pcbConnStrOut
)
2232 TRACE("(hdbc %p, szConnStrIn %s, cbConnStrIn %d, szConnStrOut %p, cbConnStrOutMax %d, pcbConnStrOut %p)\n",
2233 hdbc
, debugstr_an((const char *)szConnStrIn
, cbConnStrIn
), cbConnStrIn
, szConnStrOut
, cbConnStrOutMax
,
2236 ret
= sql_funcs
.pSQLBrowseConnect(hdbc
, szConnStrIn
, cbConnStrIn
, szConnStrOut
, cbConnStrOutMax
, pcbConnStrOut
);
2237 TRACE("Returning %d\n", ret
);
2241 /*************************************************************************
2242 * SQLBulkOperations [ODBC32.078]
2244 SQLRETURN WINAPI
SQLBulkOperations(SQLHSTMT StatementHandle
, SQLSMALLINT Operation
)
2248 TRACE("(StatementHandle %p, Operation %d)\n", StatementHandle
, Operation
);
2250 ret
= sql_funcs
.pSQLBulkOperations(StatementHandle
, Operation
);
2251 TRACE("Returning %d\n", ret
);
2255 /*************************************************************************
2256 * SQLColAttributes [ODBC32.006]
2258 SQLRETURN WINAPI
SQLColAttributes(SQLHSTMT hstmt
, SQLUSMALLINT icol
, SQLUSMALLINT fDescType
,
2259 SQLPOINTER rgbDesc
, SQLSMALLINT cbDescMax
, SQLSMALLINT
*pcbDesc
,
2264 TRACE("(hstmt %p, icol %d, fDescType %d, rgbDesc %p, cbDescMax %d, pcbDesc %p, pfDesc %p)\n", hstmt
, icol
,
2265 fDescType
, rgbDesc
, cbDescMax
, pcbDesc
, pfDesc
);
2267 ret
= sql_funcs
.pSQLColAttributes(hstmt
, icol
, fDescType
, rgbDesc
, cbDescMax
, pcbDesc
, pfDesc
);
2268 TRACE("Returning %d\n", ret
);
2272 /*************************************************************************
2273 * SQLColumnPrivileges [ODBC32.056]
2275 SQLRETURN WINAPI
SQLColumnPrivileges(SQLHSTMT hstmt
, SQLCHAR
*szCatalogName
, SQLSMALLINT cbCatalogName
,
2276 SQLCHAR
*szSchemaName
, SQLSMALLINT cbSchemaName
, SQLCHAR
*szTableName
,
2277 SQLSMALLINT cbTableName
, SQLCHAR
*szColumnName
, SQLSMALLINT cbColumnName
)
2281 TRACE("(hstmt %p, szCatalogName %s, cbCatalogName %d, szSchemaName %s, cbSchemaName %d, szTableName %s,"
2282 " cbTableName %d, szColumnName %s, cbColumnName %d)\n", hstmt
,
2283 debugstr_an((const char *)szCatalogName
, cbCatalogName
), cbCatalogName
,
2284 debugstr_an((const char *)szSchemaName
, cbSchemaName
), cbSchemaName
,
2285 debugstr_an((const char *)szTableName
, cbTableName
), cbTableName
,
2286 debugstr_an((const char *)szColumnName
, cbColumnName
), cbColumnName
);
2288 ret
= sql_funcs
.pSQLColumnPrivileges(hstmt
, szCatalogName
, cbCatalogName
, szSchemaName
, cbSchemaName
,
2289 szTableName
, cbTableName
, szColumnName
, cbColumnName
);
2290 TRACE("Returning %d\n", ret
);
2294 /*************************************************************************
2295 * SQLDescribeParam [ODBC32.058]
2297 SQLRETURN WINAPI
SQLDescribeParam(SQLHSTMT hstmt
, SQLUSMALLINT ipar
, SQLSMALLINT
*pfSqlType
,
2298 SQLULEN
*pcbParamDef
, SQLSMALLINT
*pibScale
, SQLSMALLINT
*pfNullable
)
2302 TRACE("(hstmt %p, ipar %d, pfSqlType %p, pcbParamDef %p, pibScale %p, pfNullable %p)\n", hstmt
, ipar
,
2303 pfSqlType
, pcbParamDef
, pibScale
, pfNullable
);
2305 ret
= sql_funcs
.pSQLDescribeParam(hstmt
, ipar
, pfSqlType
, pcbParamDef
, pibScale
, pfNullable
);
2306 TRACE("Returning %d\n", ret
);
2310 /*************************************************************************
2311 * SQLExtendedFetch [ODBC32.059]
2313 SQLRETURN WINAPI
SQLExtendedFetch(SQLHSTMT hstmt
, SQLUSMALLINT fFetchType
, SQLLEN irow
, SQLULEN
*pcrow
,
2314 SQLUSMALLINT
*rgfRowStatus
)
2318 TRACE("(hstmt %p, fFetchType %d, irow %s, pcrow %p, rgfRowStatus %p)\n", hstmt
, fFetchType
, debugstr_sqllen(irow
),
2319 pcrow
, rgfRowStatus
);
2321 ret
= sql_funcs
.pSQLExtendedFetch(hstmt
, fFetchType
, irow
, pcrow
, rgfRowStatus
);
2322 TRACE("Returning %d\n", ret
);
2326 /*************************************************************************
2327 * SQLForeignKeys [ODBC32.060]
2329 SQLRETURN WINAPI
SQLForeignKeys(SQLHSTMT hstmt
, SQLCHAR
*szPkCatalogName
, SQLSMALLINT cbPkCatalogName
,
2330 SQLCHAR
*szPkSchemaName
, SQLSMALLINT cbPkSchemaName
, SQLCHAR
*szPkTableName
,
2331 SQLSMALLINT cbPkTableName
, SQLCHAR
*szFkCatalogName
,
2332 SQLSMALLINT cbFkCatalogName
, SQLCHAR
*szFkSchemaName
,
2333 SQLSMALLINT cbFkSchemaName
, SQLCHAR
*szFkTableName
, SQLSMALLINT cbFkTableName
)
2337 TRACE("(hstmt %p, szPkCatalogName %s, cbPkCatalogName %d, szPkSchemaName %s, cbPkSchemaName %d,"
2338 " szPkTableName %s, cbPkTableName %d, szFkCatalogName %s, cbFkCatalogName %d, szFkSchemaName %s,"
2339 " cbFkSchemaName %d, szFkTableName %s, cbFkTableName %d)\n", hstmt
,
2340 debugstr_an((const char *)szPkCatalogName
, cbPkCatalogName
), cbPkCatalogName
,
2341 debugstr_an((const char *)szPkSchemaName
, cbPkSchemaName
), cbPkSchemaName
,
2342 debugstr_an((const char *)szPkTableName
, cbPkTableName
), cbPkTableName
,
2343 debugstr_an((const char *)szFkCatalogName
, cbFkCatalogName
), cbFkCatalogName
,
2344 debugstr_an((const char *)szFkSchemaName
, cbFkSchemaName
), cbFkSchemaName
,
2345 debugstr_an((const char *)szFkTableName
, cbFkTableName
), cbFkTableName
);
2347 ret
= sql_funcs
.pSQLForeignKeys(hstmt
, szPkCatalogName
, cbPkCatalogName
, szPkSchemaName
, cbPkSchemaName
, szPkTableName
,
2348 cbPkTableName
, szFkCatalogName
, cbFkCatalogName
, szFkSchemaName
, cbFkSchemaName
,
2349 szFkTableName
, cbFkTableName
);
2350 TRACE("Returning %d\n", ret
);
2354 /*************************************************************************
2355 * SQLMoreResults [ODBC32.061]
2357 SQLRETURN WINAPI
SQLMoreResults(SQLHSTMT StatementHandle
)
2361 TRACE("(%p)\n", StatementHandle
);
2363 ret
= sql_funcs
.pSQLMoreResults(StatementHandle
);
2364 TRACE("Returning %d\n", ret
);
2368 /*************************************************************************
2369 * SQLNativeSql [ODBC32.062]
2371 SQLRETURN WINAPI
SQLNativeSql(SQLHDBC hdbc
, SQLCHAR
*szSqlStrIn
, SQLINTEGER cbSqlStrIn
, SQLCHAR
*szSqlStr
,
2372 SQLINTEGER cbSqlStrMax
, SQLINTEGER
*pcbSqlStr
)
2376 TRACE("(hdbc %p, szSqlStrIn %s, cbSqlStrIn %d, szSqlStr %p, cbSqlStrMax %d, pcbSqlStr %p)\n", hdbc
,
2377 debugstr_an((const char *)szSqlStrIn
, cbSqlStrIn
), cbSqlStrIn
, szSqlStr
, cbSqlStrMax
, pcbSqlStr
);
2379 ret
= sql_funcs
.pSQLNativeSql(hdbc
, szSqlStrIn
, cbSqlStrIn
, szSqlStr
, cbSqlStrMax
, pcbSqlStr
);
2380 TRACE("Returning %d\n", ret
);
2384 /*************************************************************************
2385 * SQLNumParams [ODBC32.063]
2387 SQLRETURN WINAPI
SQLNumParams(SQLHSTMT hstmt
, SQLSMALLINT
*pcpar
)
2391 TRACE("(hstmt %p, pcpar %p)\n", hstmt
, pcpar
);
2393 ret
= sql_funcs
.pSQLNumParams(hstmt
, pcpar
);
2394 TRACE("Returning %d\n", ret
);
2398 /*************************************************************************
2399 * SQLParamOptions [ODBC32.064]
2401 SQLRETURN WINAPI
SQLParamOptions(SQLHSTMT hstmt
, SQLULEN crow
, SQLULEN
*pirow
)
2405 TRACE("(hstmt %p, crow %s, pirow %p)\n", hstmt
, debugstr_sqlulen(crow
), pirow
);
2407 ret
= sql_funcs
.pSQLParamOptions(hstmt
, crow
, pirow
);
2408 TRACE("Returning %d\n", ret
);
2412 /*************************************************************************
2413 * SQLPrimaryKeys [ODBC32.065]
2415 SQLRETURN WINAPI
SQLPrimaryKeys(SQLHSTMT hstmt
, SQLCHAR
*szCatalogName
, SQLSMALLINT cbCatalogName
,
2416 SQLCHAR
*szSchemaName
, SQLSMALLINT cbSchemaName
, SQLCHAR
*szTableName
,
2417 SQLSMALLINT cbTableName
)
2421 TRACE("(hstmt %p, szCatalogName %s, cbCatalogName %d, szSchemaName %s, cbSchemaName %d, szTableName %s,"
2422 " cbTableName %d)\n", hstmt
,
2423 debugstr_an((const char *)szCatalogName
, cbCatalogName
), cbCatalogName
,
2424 debugstr_an((const char *)szSchemaName
, cbSchemaName
), cbSchemaName
,
2425 debugstr_an((const char *)szTableName
, cbTableName
), cbTableName
);
2427 ret
= sql_funcs
.pSQLPrimaryKeys(hstmt
, szCatalogName
, cbCatalogName
, szSchemaName
, cbSchemaName
, szTableName
, cbTableName
);
2428 TRACE("Returning %d\n", ret
);
2432 /*************************************************************************
2433 * SQLProcedureColumns [ODBC32.066]
2435 SQLRETURN WINAPI
SQLProcedureColumns(SQLHSTMT hstmt
, SQLCHAR
*szCatalogName
, SQLSMALLINT cbCatalogName
,
2436 SQLCHAR
*szSchemaName
, SQLSMALLINT cbSchemaName
, SQLCHAR
*szProcName
,
2437 SQLSMALLINT cbProcName
, SQLCHAR
*szColumnName
, SQLSMALLINT cbColumnName
)
2441 TRACE("(hstmt %p, szCatalogName %s, cbCatalogName %d, szSchemaName %s, cbSchemaName %d, szProcName %s,"
2442 " cbProcName %d, szColumnName %s, cbColumnName %d)\n", hstmt
,
2443 debugstr_an((const char *)szCatalogName
, cbCatalogName
), cbCatalogName
,
2444 debugstr_an((const char *)szSchemaName
, cbSchemaName
), cbSchemaName
,
2445 debugstr_an((const char *)szProcName
, cbProcName
), cbProcName
,
2446 debugstr_an((const char *)szColumnName
, cbColumnName
), cbColumnName
);
2448 ret
= sql_funcs
.pSQLProcedureColumns(hstmt
, szCatalogName
, cbCatalogName
, szSchemaName
, cbSchemaName
, szProcName
,
2449 cbProcName
, szColumnName
, cbColumnName
);
2450 TRACE("Returning %d\n", ret
);
2454 /*************************************************************************
2455 * SQLProcedures [ODBC32.067]
2457 SQLRETURN WINAPI
SQLProcedures(SQLHSTMT hstmt
, SQLCHAR
*szCatalogName
, SQLSMALLINT cbCatalogName
,
2458 SQLCHAR
*szSchemaName
, SQLSMALLINT cbSchemaName
, SQLCHAR
*szProcName
,
2459 SQLSMALLINT cbProcName
)
2463 TRACE("(hstmt %p, szCatalogName %s, cbCatalogName %d, szSchemaName %s, cbSchemaName %d, szProcName %s,"
2464 " cbProcName %d)\n", hstmt
,
2465 debugstr_an((const char *)szCatalogName
, cbCatalogName
), cbCatalogName
,
2466 debugstr_an((const char *)szSchemaName
, cbSchemaName
), cbSchemaName
,
2467 debugstr_an((const char *)szProcName
, cbProcName
), cbProcName
);
2469 ret
= sql_funcs
.pSQLProcedures(hstmt
, szCatalogName
, cbCatalogName
, szSchemaName
, cbSchemaName
, szProcName
, cbProcName
);
2470 TRACE("Returning %d\n", ret
);
2474 /*************************************************************************
2475 * SQLSetPos [ODBC32.068]
2477 SQLRETURN WINAPI
SQLSetPos(SQLHSTMT hstmt
, SQLSETPOSIROW irow
, SQLUSMALLINT fOption
, SQLUSMALLINT fLock
)
2481 TRACE("(hstmt %p, irow %s, fOption %d, fLock %d)\n", hstmt
, debugstr_sqlulen(irow
), fOption
, fLock
);
2483 ret
= sql_funcs
.pSQLSetPos(hstmt
, irow
, fOption
, fLock
);
2484 TRACE("Returning %d\n", ret
);
2488 /*************************************************************************
2489 * SQLTablePrivileges [ODBC32.070]
2491 SQLRETURN WINAPI
SQLTablePrivileges(SQLHSTMT hstmt
, SQLCHAR
*szCatalogName
, SQLSMALLINT cbCatalogName
,
2492 SQLCHAR
*szSchemaName
, SQLSMALLINT cbSchemaName
, SQLCHAR
*szTableName
,
2493 SQLSMALLINT cbTableName
)
2497 TRACE("(hstmt %p, szCatalogName %s, cbCatalogName %d, szSchemaName %s, cbSchemaName %d, szTableName %s,"
2498 " cbTableName %d)\n", hstmt
,
2499 debugstr_an((const char *)szCatalogName
, cbCatalogName
), cbCatalogName
,
2500 debugstr_an((const char *)szSchemaName
, cbSchemaName
), cbSchemaName
,
2501 debugstr_an((const char *)szTableName
, cbTableName
), cbTableName
);
2503 ret
= sql_funcs
.pSQLTablePrivileges(hstmt
, szCatalogName
, cbCatalogName
, szSchemaName
, cbSchemaName
, szTableName
,
2505 TRACE("Returning %d\n", ret
);
2509 /*************************************************************************
2510 * SQLDrivers [ODBC32.071]
2512 SQLRETURN WINAPI
SQLDrivers(SQLHENV EnvironmentHandle
, SQLUSMALLINT fDirection
, SQLCHAR
*szDriverDesc
,
2513 SQLSMALLINT cbDriverDescMax
, SQLSMALLINT
*pcbDriverDesc
,
2514 SQLCHAR
*szDriverAttributes
, SQLSMALLINT cbDriverAttrMax
,
2515 SQLSMALLINT
*pcbDriverAttr
)
2519 TRACE("(EnvironmentHandle %p, Direction %d, szDriverDesc %p, cbDriverDescMax %d, pcbDriverDesc %p,"
2520 " DriverAttributes %p, cbDriverAttrMax %d, pcbDriverAttr %p)\n", EnvironmentHandle
, fDirection
,
2521 szDriverDesc
, cbDriverDescMax
, pcbDriverDesc
, szDriverAttributes
, cbDriverAttrMax
, pcbDriverAttr
);
2523 ret
= sql_funcs
.pSQLDrivers(EnvironmentHandle
, fDirection
, szDriverDesc
, cbDriverDescMax
, pcbDriverDesc
,
2524 szDriverAttributes
, cbDriverAttrMax
, pcbDriverAttr
);
2526 if (ret
== SQL_NO_DATA
&& fDirection
== SQL_FETCH_FIRST
)
2527 ERR_(winediag
)("No ODBC drivers could be found. Check the settings for your libodbc provider.\n");
2529 TRACE("Returning %d\n", ret
);
2533 /*************************************************************************
2534 * SQLBindParameter [ODBC32.072]
2536 SQLRETURN WINAPI
SQLBindParameter(SQLHSTMT hstmt
, SQLUSMALLINT ipar
, SQLSMALLINT fParamType
,
2537 SQLSMALLINT fCType
, SQLSMALLINT fSqlType
, SQLULEN cbColDef
,
2538 SQLSMALLINT ibScale
, SQLPOINTER rgbValue
, SQLLEN cbValueMax
,
2543 TRACE("(hstmt %p, ipar %d, fParamType %d, fCType %d, fSqlType %d, cbColDef %s, ibScale %d, rgbValue %p,"
2544 " cbValueMax %s, pcbValue %p)\n", hstmt
, ipar
, fParamType
, fCType
, fSqlType
, debugstr_sqlulen(cbColDef
),
2545 ibScale
, rgbValue
, debugstr_sqllen(cbValueMax
), pcbValue
);
2547 ret
= sql_funcs
.pSQLBindParameter(hstmt
, ipar
, fParamType
, fCType
, fSqlType
, cbColDef
, ibScale
, rgbValue
, cbValueMax
,
2549 TRACE("Returning %d\n", ret
);
2553 /*************************************************************************
2554 * SQLDriverConnect [ODBC32.041]
2556 SQLRETURN WINAPI
SQLDriverConnect(SQLHDBC hdbc
, SQLHWND hwnd
, SQLCHAR
*ConnectionString
, SQLSMALLINT Length
,
2557 SQLCHAR
*conn_str_out
, SQLSMALLINT conn_str_out_max
,
2558 SQLSMALLINT
*ptr_conn_str_out
, SQLUSMALLINT driver_completion
)
2562 TRACE("(hdbc %p, hwnd %p, ConnectionString %s, Length %d, conn_str_out %p, conn_str_out_max %d,"
2563 " ptr_conn_str_out %p, driver_completion %d)\n", hdbc
, hwnd
,
2564 debugstr_an((const char *)ConnectionString
, Length
), Length
, conn_str_out
, conn_str_out_max
,
2565 ptr_conn_str_out
, driver_completion
);
2567 ret
= sql_funcs
.pSQLDriverConnect(hdbc
, hwnd
, ConnectionString
, Length
, conn_str_out
, conn_str_out_max
,
2568 ptr_conn_str_out
, driver_completion
);
2569 TRACE("Returning %d\n", ret
);
2573 /*************************************************************************
2574 * SQLSetScrollOptions [ODBC32.069]
2576 SQLRETURN WINAPI
SQLSetScrollOptions(SQLHSTMT statement_handle
, SQLUSMALLINT f_concurrency
, SQLLEN crow_keyset
,
2577 SQLUSMALLINT crow_rowset
)
2581 TRACE("(statement_handle %p, f_concurrency %d, crow_keyset %s, crow_rowset %d)\n", statement_handle
,
2582 f_concurrency
, debugstr_sqllen(crow_keyset
), crow_rowset
);
2584 ret
= sql_funcs
.pSQLSetScrollOptions(statement_handle
, f_concurrency
, crow_keyset
, crow_rowset
);
2585 TRACE("Returning %d\n", ret
);
2589 static BOOL
SQLColAttributes_KnownStringAttribute(SQLUSMALLINT fDescType
)
2591 static const SQLUSMALLINT attrList
[] =
2593 SQL_COLUMN_OWNER_NAME
,
2594 SQL_COLUMN_QUALIFIER_NAME
,
2597 SQL_COLUMN_TABLE_NAME
,
2598 SQL_COLUMN_TYPE_NAME
,
2599 SQL_DESC_BASE_COLUMN_NAME
,
2600 SQL_DESC_BASE_TABLE_NAME
,
2601 SQL_DESC_CATALOG_NAME
,
2603 SQL_DESC_LITERAL_PREFIX
,
2604 SQL_DESC_LITERAL_SUFFIX
,
2605 SQL_DESC_LOCAL_TYPE_NAME
,
2607 SQL_DESC_SCHEMA_NAME
,
2608 SQL_DESC_TABLE_NAME
,
2613 for (i
= 0; i
< ARRAY_SIZE(attrList
); i
++) {
2614 if (attrList
[i
] == fDescType
) return TRUE
;
2619 /*************************************************************************
2620 * SQLColAttributesW [ODBC32.106]
2622 SQLRETURN WINAPI
SQLColAttributesW(SQLHSTMT hstmt
, SQLUSMALLINT icol
, SQLUSMALLINT fDescType
,
2623 SQLPOINTER rgbDesc
, SQLSMALLINT cbDescMax
, SQLSMALLINT
*pcbDesc
,
2628 TRACE("(hstmt %p, icol %d, fDescType %d, rgbDesc %p, cbDescMax %d, pcbDesc %p, pfDesc %p)\n", hstmt
, icol
,
2629 fDescType
, rgbDesc
, cbDescMax
, pcbDesc
, pfDesc
);
2631 ret
= sql_funcs
.pSQLColAttributesW(hstmt
, icol
, fDescType
, rgbDesc
, cbDescMax
, pcbDesc
, pfDesc
);
2633 if (ret
== SQL_SUCCESS
&& SQLColAttributes_KnownStringAttribute(fDescType
) && rgbDesc
&& pcbDesc
&&
2634 *pcbDesc
!= lstrlenW(rgbDesc
) * 2)
2636 TRACE("CHEAT: resetting name length for ADO\n");
2637 *pcbDesc
= lstrlenW(rgbDesc
) * 2;
2640 TRACE("Returning %d\n", ret
);
2644 /*************************************************************************
2645 * SQLConnectW [ODBC32.107]
2647 SQLRETURN WINAPI
SQLConnectW(SQLHDBC ConnectionHandle
, WCHAR
*ServerName
, SQLSMALLINT NameLength1
,
2648 WCHAR
*UserName
, SQLSMALLINT NameLength2
, WCHAR
*Authentication
,
2649 SQLSMALLINT NameLength3
)
2653 TRACE("(ConnectionHandle %p, ServerName %s, NameLength1 %d, UserName %s, NameLength2 %d, Authentication %s,"
2654 " NameLength3 %d)\n", ConnectionHandle
, debugstr_wn(ServerName
, NameLength1
), NameLength1
,
2655 debugstr_wn(UserName
, NameLength2
), NameLength2
, debugstr_wn(Authentication
, NameLength3
), NameLength3
);
2657 ret
= sql_funcs
.pSQLConnectW(ConnectionHandle
, ServerName
, NameLength1
, UserName
, NameLength2
, Authentication
, NameLength3
);
2658 TRACE("Returning %d\n", ret
);
2662 /*************************************************************************
2663 * SQLDescribeColW [ODBC32.108]
2665 SQLRETURN WINAPI
SQLDescribeColW(SQLHSTMT StatementHandle
, SQLUSMALLINT ColumnNumber
, WCHAR
*ColumnName
,
2666 SQLSMALLINT BufferLength
, SQLSMALLINT
*NameLength
, SQLSMALLINT
*DataType
,
2667 SQLULEN
*ColumnSize
, SQLSMALLINT
*DecimalDigits
, SQLSMALLINT
*Nullable
)
2672 TRACE("(StatementHandle %p, ColumnNumber %d, ColumnName %p, BufferLength %d, NameLength %p, DataType %p,"
2673 " ColumnSize %p, DecimalDigits %p, Nullable %p)\n", StatementHandle
, ColumnNumber
, ColumnName
,
2674 BufferLength
, NameLength
, DataType
, ColumnSize
, DecimalDigits
, Nullable
);
2676 if (!NameLength
) NameLength
= &dummy
; /* workaround for drivers that don't accept NULL NameLength */
2678 ret
= sql_funcs
.pSQLDescribeColW(StatementHandle
, ColumnNumber
, ColumnName
, BufferLength
, NameLength
, DataType
, ColumnSize
,
2679 DecimalDigits
, Nullable
);
2682 if (ColumnName
&& NameLength
) TRACE("ColumnName %s\n", debugstr_wn(ColumnName
, *NameLength
));
2683 if (DataType
) TRACE("DataType %d\n", *DataType
);
2684 if (ColumnSize
) TRACE("ColumnSize %s\n", debugstr_sqlulen(*ColumnSize
));
2685 if (DecimalDigits
) TRACE("DecimalDigits %d\n", *DecimalDigits
);
2686 if (Nullable
) TRACE("Nullable %d\n", *Nullable
);
2689 TRACE("Returning %d\n", ret
);
2693 /*************************************************************************
2694 * SQLErrorW [ODBC32.110]
2696 SQLRETURN WINAPI
SQLErrorW(SQLHENV EnvironmentHandle
, SQLHDBC ConnectionHandle
, SQLHSTMT StatementHandle
,
2697 WCHAR
*Sqlstate
, SQLINTEGER
*NativeError
, WCHAR
*MessageText
,
2698 SQLSMALLINT BufferLength
, SQLSMALLINT
*TextLength
)
2702 TRACE("(EnvironmentHandle %p, ConnectionHandle %p, StatementHandle %p, Sqlstate %p, NativeError %p,"
2703 " MessageText %p, BufferLength %d, TextLength %p)\n", EnvironmentHandle
, ConnectionHandle
,
2704 StatementHandle
, Sqlstate
, NativeError
, MessageText
, BufferLength
, TextLength
);
2706 ret
= sql_funcs
.pSQLErrorW(EnvironmentHandle
, ConnectionHandle
, StatementHandle
, Sqlstate
, NativeError
, MessageText
,
2707 BufferLength
, TextLength
);
2709 if (ret
== SQL_SUCCESS
)
2711 TRACE(" SQLState %s\n", debugstr_wn(Sqlstate
, 5));
2712 TRACE(" Error %d\n", *NativeError
);
2713 TRACE(" MessageText %s\n", debugstr_wn(MessageText
, *TextLength
));
2716 TRACE("Returning %d\n", ret
);
2720 /*************************************************************************
2721 * SQLExecDirectW [ODBC32.111]
2723 SQLRETURN WINAPI
SQLExecDirectW(SQLHSTMT StatementHandle
, WCHAR
*StatementText
, SQLINTEGER TextLength
)
2727 TRACE("(StatementHandle %p, StatementText %s, TextLength %d)\n", StatementHandle
,
2728 debugstr_wn(StatementText
, TextLength
), TextLength
);
2730 ret
= sql_funcs
.pSQLExecDirectW(StatementHandle
, StatementText
, TextLength
);
2731 TRACE("Returning %d\n", ret
);
2735 /*************************************************************************
2736 * SQLGetCursorNameW [ODBC32.117]
2738 SQLRETURN WINAPI
SQLGetCursorNameW(SQLHSTMT StatementHandle
, WCHAR
*CursorName
, SQLSMALLINT BufferLength
,
2739 SQLSMALLINT
*NameLength
)
2743 TRACE("(StatementHandle %p, CursorName %p, BufferLength %d, NameLength %p)\n", StatementHandle
, CursorName
,
2744 BufferLength
, NameLength
);
2746 ret
= sql_funcs
.pSQLGetCursorNameW(StatementHandle
, CursorName
, BufferLength
, NameLength
);
2747 TRACE("Returning %d\n", ret
);
2751 /*************************************************************************
2752 * SQLPrepareW [ODBC32.119]
2754 SQLRETURN WINAPI
SQLPrepareW(SQLHSTMT StatementHandle
, WCHAR
*StatementText
, SQLINTEGER TextLength
)
2758 TRACE("(StatementHandle %p, StatementText %s, TextLength %d)\n", StatementHandle
,
2759 debugstr_wn(StatementText
, TextLength
), TextLength
);
2761 ret
= sql_funcs
.pSQLPrepareW(StatementHandle
, StatementText
, TextLength
);
2762 TRACE("Returning %d\n", ret
);
2766 /*************************************************************************
2767 * SQLSetCursorNameW [ODBC32.121]
2769 SQLRETURN WINAPI
SQLSetCursorNameW(SQLHSTMT StatementHandle
, WCHAR
*CursorName
, SQLSMALLINT NameLength
)
2773 TRACE("(StatementHandle %p, CursorName %s, NameLength %d)\n", StatementHandle
,
2774 debugstr_wn(CursorName
, NameLength
), NameLength
);
2776 ret
= sql_funcs
.pSQLSetCursorNameW(StatementHandle
, CursorName
, NameLength
);
2777 TRACE("Returning %d\n", ret
);
2781 /*************************************************************************
2782 * SQLColAttributeW [ODBC32.127]
2784 SQLRETURN WINAPI
SQLColAttributeW(SQLHSTMT StatementHandle
, SQLUSMALLINT ColumnNumber
,
2785 SQLUSMALLINT FieldIdentifier
, SQLPOINTER CharacterAttribute
,
2786 SQLSMALLINT BufferLength
, SQLSMALLINT
*StringLength
,
2787 SQLLEN
*NumericAttribute
)
2791 TRACE("StatementHandle %p ColumnNumber %d FieldIdentifier %d CharacterAttribute %p BufferLength %d"
2792 " StringLength %p NumericAttribute %p\n", StatementHandle
, ColumnNumber
, FieldIdentifier
,
2793 CharacterAttribute
, BufferLength
, StringLength
, NumericAttribute
);
2795 ret
= sql_funcs
.pSQLColAttributeW(StatementHandle
, ColumnNumber
, FieldIdentifier
, CharacterAttribute
, BufferLength
,
2796 StringLength
, NumericAttribute
);
2798 if (ret
== SQL_SUCCESS
&& CharacterAttribute
!= NULL
&& SQLColAttributes_KnownStringAttribute(FieldIdentifier
) &&
2799 StringLength
&& *StringLength
!= lstrlenW(CharacterAttribute
) * 2)
2801 TRACE("CHEAT: resetting name length for ADO\n");
2802 *StringLength
= lstrlenW(CharacterAttribute
) * 2;
2805 TRACE("Returning %d\n", ret
);
2809 /*************************************************************************
2810 * SQLGetConnectAttrW [ODBC32.132]
2812 SQLRETURN WINAPI
SQLGetConnectAttrW(SQLHDBC ConnectionHandle
, SQLINTEGER Attribute
, SQLPOINTER Value
,
2813 SQLINTEGER BufferLength
, SQLINTEGER
*StringLength
)
2817 TRACE("(ConnectionHandle %p, Attribute %d, Value %p, BufferLength %d, StringLength %p)\n", ConnectionHandle
,
2818 Attribute
, Value
, BufferLength
, StringLength
);
2820 ret
= sql_funcs
.pSQLGetConnectAttrW(ConnectionHandle
, Attribute
, Value
, BufferLength
, StringLength
);
2821 TRACE("Returning %d\n", ret
);
2825 /*************************************************************************
2826 * SQLGetDescFieldW [ODBC32.133]
2828 SQLRETURN WINAPI
SQLGetDescFieldW(SQLHDESC DescriptorHandle
, SQLSMALLINT RecNumber
, SQLSMALLINT FieldIdentifier
,
2829 SQLPOINTER Value
, SQLINTEGER BufferLength
, SQLINTEGER
*StringLength
)
2833 TRACE("(DescriptorHandle %p, RecNumber %d, FieldIdentifier %d, Value %p, BufferLength %d, StringLength %p)\n",
2834 DescriptorHandle
, RecNumber
, FieldIdentifier
, Value
, BufferLength
, StringLength
);
2836 ret
= sql_funcs
.pSQLGetDescFieldW(DescriptorHandle
, RecNumber
, FieldIdentifier
, Value
, BufferLength
, StringLength
);
2837 TRACE("Returning %d\n", ret
);
2841 /*************************************************************************
2842 * SQLGetDescRecW [ODBC32.134]
2844 SQLRETURN WINAPI
SQLGetDescRecW(SQLHDESC DescriptorHandle
, SQLSMALLINT RecNumber
, WCHAR
*Name
,
2845 SQLSMALLINT BufferLength
, SQLSMALLINT
*StringLength
, SQLSMALLINT
*Type
,
2846 SQLSMALLINT
*SubType
, SQLLEN
*Length
, SQLSMALLINT
*Precision
,
2847 SQLSMALLINT
*Scale
, SQLSMALLINT
*Nullable
)
2851 TRACE("(DescriptorHandle %p, RecNumber %d, Name %p, BufferLength %d, StringLength %p, Type %p, SubType %p,"
2852 " Length %p, Precision %p, Scale %p, Nullable %p)\n", DescriptorHandle
, RecNumber
, Name
, BufferLength
,
2853 StringLength
, Type
, SubType
, Length
, Precision
, Scale
, Nullable
);
2855 ret
= sql_funcs
.pSQLGetDescRecW(DescriptorHandle
, RecNumber
, Name
, BufferLength
, StringLength
, Type
, SubType
, Length
,
2856 Precision
, Scale
, Nullable
);
2857 TRACE("Returning %d\n", ret
);
2861 /*************************************************************************
2862 * SQLGetDiagFieldW [ODBC32.135]
2864 SQLRETURN WINAPI
SQLGetDiagFieldW(SQLSMALLINT HandleType
, SQLHANDLE Handle
, SQLSMALLINT RecNumber
,
2865 SQLSMALLINT DiagIdentifier
, SQLPOINTER DiagInfo
, SQLSMALLINT BufferLength
,
2866 SQLSMALLINT
*StringLength
)
2870 TRACE("(HandleType %d, Handle %p, RecNumber %d, DiagIdentifier %d, DiagInfo %p, BufferLength %d,"
2871 " StringLength %p)\n", HandleType
, Handle
, RecNumber
, DiagIdentifier
, DiagInfo
, BufferLength
, StringLength
);
2873 ret
= sql_funcs
.pSQLGetDiagFieldW(HandleType
, Handle
, RecNumber
, DiagIdentifier
, DiagInfo
, BufferLength
, StringLength
);
2874 TRACE("Returning %d\n", ret
);
2878 /*************************************************************************
2879 * SQLGetDiagRecW [ODBC32.136]
2881 SQLRETURN WINAPI
SQLGetDiagRecW(SQLSMALLINT HandleType
, SQLHANDLE Handle
, SQLSMALLINT RecNumber
,
2882 WCHAR
*Sqlstate
, SQLINTEGER
*NativeError
, WCHAR
*MessageText
,
2883 SQLSMALLINT BufferLength
, SQLSMALLINT
*TextLength
)
2887 TRACE("(HandleType %d, Handle %p, RecNumber %d, Sqlstate %p, NativeError %p, MessageText %p, BufferLength %d,"
2888 " TextLength %p)\n", HandleType
, Handle
, RecNumber
, Sqlstate
, NativeError
, MessageText
, BufferLength
,
2891 ret
= sql_funcs
.pSQLGetDiagRecW(HandleType
, Handle
, RecNumber
, Sqlstate
, NativeError
, MessageText
, BufferLength
, TextLength
);
2892 TRACE("Returning %d\n", ret
);
2896 /*************************************************************************
2897 * SQLGetStmtAttrW [ODBC32.138]
2899 SQLRETURN WINAPI
SQLGetStmtAttrW(SQLHSTMT StatementHandle
, SQLINTEGER Attribute
, SQLPOINTER Value
,
2900 SQLINTEGER BufferLength
, SQLINTEGER
*StringLength
)
2904 TRACE("(StatementHandle %p, Attribute %d, Value %p, BufferLength %d, StringLength %p)\n", StatementHandle
,
2905 Attribute
, Value
, BufferLength
, StringLength
);
2909 WARN("Unexpected NULL Value return address\n");
2913 ret
= sql_funcs
.pSQLGetStmtAttrW(StatementHandle
, Attribute
, Value
, BufferLength
, StringLength
);
2914 TRACE("Returning %d\n", ret
);
2918 /*************************************************************************
2919 * SQLSetConnectAttrW [ODBC32.139]
2921 SQLRETURN WINAPI
SQLSetConnectAttrW(SQLHDBC ConnectionHandle
, SQLINTEGER Attribute
, SQLPOINTER Value
,
2922 SQLINTEGER StringLength
)
2926 TRACE("(ConnectionHandle %p, Attribute %d, Value %p, StringLength %d)\n", ConnectionHandle
, Attribute
, Value
,
2929 ret
= sql_funcs
.pSQLSetConnectAttrW(ConnectionHandle
, Attribute
, Value
, StringLength
);
2930 TRACE("Returning %d\n", ret
);
2934 /*************************************************************************
2935 * SQLColumnsW [ODBC32.140]
2937 SQLRETURN WINAPI
SQLColumnsW(SQLHSTMT StatementHandle
, WCHAR
*CatalogName
, SQLSMALLINT NameLength1
,
2938 WCHAR
*SchemaName
, SQLSMALLINT NameLength2
, WCHAR
*TableName
,
2939 SQLSMALLINT NameLength3
, WCHAR
*ColumnName
, SQLSMALLINT NameLength4
)
2943 TRACE("(StatementHandle %p, CatalogName %s, NameLength1 %d, SchemaName %s, NameLength2 %d, TableName %s,"
2944 " NameLength3 %d, ColumnName %s, NameLength4 %d)\n", StatementHandle
,
2945 debugstr_wn(CatalogName
, NameLength1
), NameLength1
, debugstr_wn(SchemaName
, NameLength2
), NameLength2
,
2946 debugstr_wn(TableName
, NameLength3
), NameLength3
, debugstr_wn(ColumnName
, NameLength4
), NameLength4
);
2948 ret
= sql_funcs
.pSQLColumnsW(StatementHandle
, CatalogName
, NameLength1
, SchemaName
, NameLength2
, TableName
, NameLength3
,
2949 ColumnName
, NameLength4
);
2950 TRACE("Returning %d\n", ret
);
2954 /*************************************************************************
2955 * SQLDriverConnectW [ODBC32.141]
2957 SQLRETURN WINAPI
SQLDriverConnectW(SQLHDBC ConnectionHandle
, SQLHWND WindowHandle
, WCHAR
*InConnectionString
,
2958 SQLSMALLINT Length
, WCHAR
*OutConnectionString
, SQLSMALLINT BufferLength
,
2959 SQLSMALLINT
*Length2
, SQLUSMALLINT DriverCompletion
)
2963 TRACE("(ConnectionHandle %p, WindowHandle %p, InConnectionString %s, Length %d, OutConnectionString %p,"
2964 " BufferLength %d, Length2 %p, DriverCompletion %d)\n", ConnectionHandle
, WindowHandle
,
2965 debugstr_wn(InConnectionString
, Length
), Length
, OutConnectionString
, BufferLength
, Length2
,
2968 ret
= sql_funcs
.pSQLDriverConnectW(ConnectionHandle
, WindowHandle
, InConnectionString
, Length
, OutConnectionString
,
2969 BufferLength
, Length2
, DriverCompletion
);
2970 TRACE("Returning %d\n", ret
);
2974 /*************************************************************************
2975 * SQLGetConnectOptionW [ODBC32.142]
2977 SQLRETURN WINAPI
SQLGetConnectOptionW(SQLHDBC ConnectionHandle
, SQLUSMALLINT Option
, SQLPOINTER Value
)
2981 TRACE("(ConnectionHandle %p, Option %d, Value %p)\n", ConnectionHandle
, Option
, Value
);
2983 ret
= sql_funcs
.pSQLGetConnectOptionW(ConnectionHandle
, Option
, Value
);
2984 TRACE("Returning %d\n", ret
);
2988 /*************************************************************************
2989 * SQLGetInfoW [ODBC32.145]
2991 SQLRETURN WINAPI
SQLGetInfoW(SQLHDBC ConnectionHandle
, SQLUSMALLINT InfoType
, SQLPOINTER InfoValue
,
2992 SQLSMALLINT BufferLength
, SQLSMALLINT
*StringLength
)
2996 TRACE("(ConnectionHandle, %p, InfoType %d, InfoValue %p, BufferLength %d, StringLength %p)\n", ConnectionHandle
,
2997 InfoType
, InfoValue
, BufferLength
, StringLength
);
3001 WARN("Unexpected NULL InfoValue address\n");
3005 ret
= sql_funcs
.pSQLGetInfoW(ConnectionHandle
, InfoType
, InfoValue
, BufferLength
, StringLength
);
3006 TRACE("Returning %d\n", ret
);
3010 /*************************************************************************
3011 * SQLGetTypeInfoW [ODBC32.147]
3013 SQLRETURN WINAPI
SQLGetTypeInfoW(SQLHSTMT StatementHandle
, SQLSMALLINT DataType
)
3017 TRACE("(StatementHandle %p, DataType %d)\n", StatementHandle
, DataType
);
3019 ret
= sql_funcs
.pSQLGetTypeInfoW(StatementHandle
, DataType
);
3020 TRACE("Returning %d\n", ret
);
3024 /*************************************************************************
3025 * SQLSetConnectOptionW [ODBC32.150]
3027 SQLRETURN WINAPI
SQLSetConnectOptionW(SQLHDBC ConnectionHandle
, SQLUSMALLINT Option
, SQLLEN Value
)
3031 TRACE("(ConnectionHandle %p, Option %d, Value %s)\n", ConnectionHandle
, Option
, debugstr_sqllen(Value
));
3033 ret
= sql_funcs
.pSQLSetConnectOptionW(ConnectionHandle
, Option
, Value
);
3034 TRACE("Returning %d\n", ret
);
3038 /*************************************************************************
3039 * SQLSpecialColumnsW [ODBC32.152]
3041 SQLRETURN WINAPI
SQLSpecialColumnsW(SQLHSTMT StatementHandle
, SQLUSMALLINT IdentifierType
,
3042 SQLWCHAR
*CatalogName
, SQLSMALLINT NameLength1
, SQLWCHAR
*SchemaName
,
3043 SQLSMALLINT NameLength2
, SQLWCHAR
*TableName
, SQLSMALLINT NameLength3
,
3044 SQLUSMALLINT Scope
, SQLUSMALLINT Nullable
)
3048 TRACE("(StatementHandle %p, IdentifierType %d, CatalogName %s, NameLength1 %d, SchemaName %s, NameLength2 %d,"
3049 " TableName %s, NameLength3 %d, Scope %d, Nullable %d)\n", StatementHandle
, IdentifierType
,
3050 debugstr_wn(CatalogName
, NameLength1
), NameLength1
, debugstr_wn(SchemaName
, NameLength2
), NameLength2
,
3051 debugstr_wn(TableName
, NameLength3
), NameLength3
, Scope
, Nullable
);
3053 ret
= sql_funcs
.pSQLSpecialColumnsW(StatementHandle
, IdentifierType
, CatalogName
, NameLength1
, SchemaName
,
3054 NameLength2
, TableName
, NameLength3
, Scope
, Nullable
);
3055 TRACE("Returning %d\n", ret
);
3059 /*************************************************************************
3060 * SQLStatisticsW [ODBC32.153]
3062 SQLRETURN WINAPI
SQLStatisticsW(SQLHSTMT StatementHandle
, SQLWCHAR
*CatalogName
, SQLSMALLINT NameLength1
,
3063 SQLWCHAR
*SchemaName
, SQLSMALLINT NameLength2
, SQLWCHAR
*TableName
,
3064 SQLSMALLINT NameLength3
, SQLUSMALLINT Unique
, SQLUSMALLINT Reserved
)
3068 TRACE("(StatementHandle %p, CatalogName %s, NameLength1 %d SchemaName %s, NameLength2 %d, TableName %s"
3069 " NameLength3 %d, Unique %d, Reserved %d)\n", StatementHandle
,
3070 debugstr_wn(CatalogName
, NameLength1
), NameLength1
, debugstr_wn(SchemaName
, NameLength2
), NameLength2
,
3071 debugstr_wn(TableName
, NameLength3
), NameLength3
, Unique
, Reserved
);
3073 ret
= sql_funcs
.pSQLStatisticsW(StatementHandle
, CatalogName
, NameLength1
, SchemaName
, NameLength2
, TableName
,
3074 NameLength3
, Unique
, Reserved
);
3075 TRACE("Returning %d\n", ret
);
3079 /*************************************************************************
3080 * SQLTablesW [ODBC32.154]
3082 SQLRETURN WINAPI
SQLTablesW(SQLHSTMT StatementHandle
, SQLWCHAR
*CatalogName
, SQLSMALLINT NameLength1
,
3083 SQLWCHAR
*SchemaName
, SQLSMALLINT NameLength2
, SQLWCHAR
*TableName
,
3084 SQLSMALLINT NameLength3
, SQLWCHAR
*TableType
, SQLSMALLINT NameLength4
)
3088 TRACE("(StatementHandle %p, CatalogName %s, NameLength1 %d, SchemaName %s, NameLength2 %d, TableName %s,"
3089 " NameLength3 %d, TableType %s, NameLength4 %d)\n", StatementHandle
,
3090 debugstr_wn(CatalogName
, NameLength1
), NameLength1
, debugstr_wn(SchemaName
, NameLength2
), NameLength2
,
3091 debugstr_wn(TableName
, NameLength3
), NameLength3
, debugstr_wn(TableType
, NameLength4
), NameLength4
);
3093 ret
= sql_funcs
.pSQLTablesW(StatementHandle
, CatalogName
, NameLength1
, SchemaName
, NameLength2
, TableName
, NameLength3
,
3094 TableType
, NameLength4
);
3095 TRACE("Returning %d\n", ret
);
3099 /*************************************************************************
3100 * SQLBrowseConnectW [ODBC32.155]
3102 SQLRETURN WINAPI
SQLBrowseConnectW(SQLHDBC hdbc
, SQLWCHAR
*szConnStrIn
, SQLSMALLINT cbConnStrIn
,
3103 SQLWCHAR
*szConnStrOut
, SQLSMALLINT cbConnStrOutMax
,
3104 SQLSMALLINT
*pcbConnStrOut
)
3108 TRACE("(hdbc %p, szConnStrIn %s, cbConnStrIn %d, szConnStrOut %p, cbConnStrOutMax %d, pcbConnStrOut %p)\n",
3109 hdbc
, debugstr_wn(szConnStrIn
, cbConnStrIn
), cbConnStrIn
, szConnStrOut
, cbConnStrOutMax
, pcbConnStrOut
);
3111 ret
= sql_funcs
.pSQLBrowseConnectW(hdbc
, szConnStrIn
, cbConnStrIn
, szConnStrOut
, cbConnStrOutMax
, pcbConnStrOut
);
3112 TRACE("Returning %d\n", ret
);
3116 /*************************************************************************
3117 * SQLColumnPrivilegesW [ODBC32.156]
3119 SQLRETURN WINAPI
SQLColumnPrivilegesW(SQLHSTMT hstmt
, SQLWCHAR
*szCatalogName
, SQLSMALLINT cbCatalogName
,
3120 SQLWCHAR
*szSchemaName
, SQLSMALLINT cbSchemaName
, SQLWCHAR
*szTableName
,
3121 SQLSMALLINT cbTableName
, SQLWCHAR
*szColumnName
, SQLSMALLINT cbColumnName
)
3125 TRACE("(hstmt %p, szCatalogName %s, cbCatalogName %d, szSchemaName %s, cbSchemaName %d, szTableName %s,"
3126 " cbTableName %d, szColumnName %s, cbColumnName %d)\n", hstmt
,
3127 debugstr_wn(szCatalogName
, cbCatalogName
), cbCatalogName
,
3128 debugstr_wn(szSchemaName
, cbSchemaName
), cbSchemaName
,
3129 debugstr_wn(szTableName
, cbTableName
), cbTableName
,
3130 debugstr_wn(szColumnName
, cbColumnName
), cbColumnName
);
3132 ret
= sql_funcs
.pSQLColumnPrivilegesW(hstmt
, szCatalogName
, cbCatalogName
, szSchemaName
, cbSchemaName
, szTableName
,
3133 cbTableName
, szColumnName
, cbColumnName
);
3134 TRACE("Returning %d\n", ret
);
3138 /*************************************************************************
3139 * SQLDataSourcesW [ODBC32.157]
3141 SQLRETURN WINAPI
SQLDataSourcesW(SQLHENV EnvironmentHandle
, SQLUSMALLINT Direction
, WCHAR
*ServerName
,
3142 SQLSMALLINT BufferLength1
, SQLSMALLINT
*NameLength1
, WCHAR
*Description
,
3143 SQLSMALLINT BufferLength2
, SQLSMALLINT
*NameLength2
)
3147 TRACE("(EnvironmentHandle %p, Direction %d, ServerName %p, BufferLength1 %d, NameLength1 %p, Description %p,"
3148 " BufferLength2 %d, NameLength2 %p)\n", EnvironmentHandle
, Direction
, ServerName
, BufferLength1
,
3149 NameLength1
, Description
, BufferLength2
, NameLength2
);
3151 ret
= sql_funcs
.pSQLDataSourcesW(EnvironmentHandle
, Direction
, ServerName
, BufferLength1
, NameLength1
, Description
,
3152 BufferLength2
, NameLength2
);
3154 if (ret
>= 0 && TRACE_ON(odbc
))
3156 if (ServerName
&& NameLength1
&& *NameLength1
> 0)
3157 TRACE(" DataSource %s", debugstr_wn(ServerName
, *NameLength1
));
3158 if (Description
&& NameLength2
&& *NameLength2
> 0)
3159 TRACE(" Description %s", debugstr_wn(Description
, *NameLength2
));
3163 TRACE("Returning %d\n", ret
);
3167 /*************************************************************************
3168 * SQLForeignKeysW [ODBC32.160]
3170 SQLRETURN WINAPI
SQLForeignKeysW(SQLHSTMT hstmt
, SQLWCHAR
*szPkCatalogName
, SQLSMALLINT cbPkCatalogName
,
3171 SQLWCHAR
*szPkSchemaName
, SQLSMALLINT cbPkSchemaName
, SQLWCHAR
*szPkTableName
,
3172 SQLSMALLINT cbPkTableName
, SQLWCHAR
*szFkCatalogName
,
3173 SQLSMALLINT cbFkCatalogName
, SQLWCHAR
*szFkSchemaName
,
3174 SQLSMALLINT cbFkSchemaName
, SQLWCHAR
*szFkTableName
, SQLSMALLINT cbFkTableName
)
3178 TRACE("(hstmt %p, szPkCatalogName %s, cbPkCatalogName %d, szPkSchemaName %s, cbPkSchemaName %d,"
3179 " szPkTableName %s, cbPkTableName %d, szFkCatalogName %s, cbFkCatalogName %d, szFkSchemaName %s,"
3180 " cbFkSchemaName %d, szFkTableName %s, cbFkTableName %d)\n", hstmt
,
3181 debugstr_wn(szPkCatalogName
, cbPkCatalogName
), cbPkCatalogName
,
3182 debugstr_wn(szPkSchemaName
, cbPkSchemaName
), cbPkSchemaName
,
3183 debugstr_wn(szPkTableName
, cbPkTableName
), cbPkTableName
,
3184 debugstr_wn(szFkCatalogName
, cbFkCatalogName
), cbFkCatalogName
,
3185 debugstr_wn(szFkSchemaName
, cbFkSchemaName
), cbFkSchemaName
,
3186 debugstr_wn(szFkTableName
, cbFkTableName
), cbFkTableName
);
3188 ret
= sql_funcs
.pSQLForeignKeysW(hstmt
, szPkCatalogName
, cbPkCatalogName
, szPkSchemaName
, cbPkSchemaName
, szPkTableName
,
3189 cbPkTableName
, szFkCatalogName
, cbFkCatalogName
, szFkSchemaName
, cbFkSchemaName
,
3190 szFkTableName
, cbFkTableName
);
3191 TRACE("Returning %d\n", ret
);
3195 /*************************************************************************
3196 * SQLNativeSqlW [ODBC32.162]
3198 SQLRETURN WINAPI
SQLNativeSqlW(SQLHDBC hdbc
, SQLWCHAR
*szSqlStrIn
, SQLINTEGER cbSqlStrIn
, SQLWCHAR
*szSqlStr
,
3199 SQLINTEGER cbSqlStrMax
, SQLINTEGER
*pcbSqlStr
)
3203 TRACE("(hdbc %p, szSqlStrIn %s, cbSqlStrIn %d, szSqlStr %p, cbSqlStrMax %d, pcbSqlStr %p)\n", hdbc
,
3204 debugstr_wn(szSqlStrIn
, cbSqlStrIn
), cbSqlStrIn
, szSqlStr
, cbSqlStrMax
, pcbSqlStr
);
3206 ret
= sql_funcs
.pSQLNativeSqlW(hdbc
, szSqlStrIn
, cbSqlStrIn
, szSqlStr
, cbSqlStrMax
, pcbSqlStr
);
3207 TRACE("Returning %d\n", ret
);
3211 /*************************************************************************
3212 * SQLPrimaryKeysW [ODBC32.165]
3214 SQLRETURN WINAPI
SQLPrimaryKeysW(SQLHSTMT hstmt
, SQLWCHAR
*szCatalogName
, SQLSMALLINT cbCatalogName
,
3215 SQLWCHAR
*szSchemaName
, SQLSMALLINT cbSchemaName
, SQLWCHAR
*szTableName
,
3216 SQLSMALLINT cbTableName
)
3220 TRACE("(hstmt %p, szCatalogName %s, cbCatalogName %d, szSchemaName %s, cbSchemaName %d, szTableName %s,"
3221 " cbTableName %d)\n", hstmt
,
3222 debugstr_wn(szCatalogName
, cbCatalogName
), cbCatalogName
,
3223 debugstr_wn(szSchemaName
, cbSchemaName
), cbSchemaName
,
3224 debugstr_wn(szTableName
, cbTableName
), cbTableName
);
3226 ret
= sql_funcs
.pSQLPrimaryKeysW(hstmt
, szCatalogName
, cbCatalogName
, szSchemaName
, cbSchemaName
, szTableName
, cbTableName
);
3227 TRACE("Returning %d\n", ret
);
3231 /*************************************************************************
3232 * SQLProcedureColumnsW [ODBC32.166]
3234 SQLRETURN WINAPI
SQLProcedureColumnsW(SQLHSTMT hstmt
, SQLWCHAR
*szCatalogName
, SQLSMALLINT cbCatalogName
,
3235 SQLWCHAR
*szSchemaName
, SQLSMALLINT cbSchemaName
, SQLWCHAR
*szProcName
,
3236 SQLSMALLINT cbProcName
, SQLWCHAR
*szColumnName
, SQLSMALLINT cbColumnName
)
3240 TRACE("(hstmt %p, szCatalogName %s, cbCatalogName %d, szSchemaName %s, cbSchemaName %d, szProcName %s,"
3241 " cbProcName %d, szColumnName %s, cbColumnName %d)\n", hstmt
,
3242 debugstr_wn(szCatalogName
, cbCatalogName
), cbCatalogName
,
3243 debugstr_wn(szSchemaName
, cbSchemaName
), cbSchemaName
,
3244 debugstr_wn(szProcName
, cbProcName
), cbProcName
,
3245 debugstr_wn(szColumnName
, cbColumnName
), cbColumnName
);
3247 ret
= sql_funcs
.pSQLProcedureColumnsW(hstmt
, szCatalogName
, cbCatalogName
, szSchemaName
, cbSchemaName
, szProcName
,
3248 cbProcName
, szColumnName
, cbColumnName
);
3249 TRACE("Returning %d\n", ret
);
3253 /*************************************************************************
3254 * SQLProceduresW [ODBC32.167]
3256 SQLRETURN WINAPI
SQLProceduresW(SQLHSTMT hstmt
, SQLWCHAR
*szCatalogName
, SQLSMALLINT cbCatalogName
,
3257 SQLWCHAR
*szSchemaName
, SQLSMALLINT cbSchemaName
, SQLWCHAR
*szProcName
,
3258 SQLSMALLINT cbProcName
)
3262 TRACE("(hstmt %p, szCatalogName %s, cbCatalogName %d, szSchemaName %s, cbSchemaName %d, szProcName %s,"
3263 " cbProcName %d)\n", hstmt
, debugstr_wn(szCatalogName
, cbCatalogName
), cbCatalogName
,
3264 debugstr_wn(szSchemaName
, cbSchemaName
), cbSchemaName
, debugstr_wn(szProcName
, cbProcName
), cbProcName
);
3266 ret
= sql_funcs
.pSQLProceduresW(hstmt
, szCatalogName
, cbCatalogName
, szSchemaName
, cbSchemaName
, szProcName
, cbProcName
);
3267 TRACE("Returning %d\n", ret
);
3271 /*************************************************************************
3272 * SQLTablePrivilegesW [ODBC32.170]
3274 SQLRETURN WINAPI
SQLTablePrivilegesW(SQLHSTMT hstmt
, SQLWCHAR
*szCatalogName
, SQLSMALLINT cbCatalogName
,
3275 SQLWCHAR
*szSchemaName
, SQLSMALLINT cbSchemaName
, SQLWCHAR
*szTableName
,
3276 SQLSMALLINT cbTableName
)
3280 TRACE("(hstmt %p, szCatalogName %s, cbCatalogName %d, szSchemaName %s, cbSchemaName %d, szTableName %s,"
3281 " cbTableName %d)\n", hstmt
, debugstr_wn(szCatalogName
, cbCatalogName
), cbCatalogName
,
3282 debugstr_wn(szSchemaName
, cbSchemaName
), cbSchemaName
, debugstr_wn(szTableName
, cbTableName
), cbTableName
);
3284 ret
= sql_funcs
.pSQLTablePrivilegesW(hstmt
, szCatalogName
, cbCatalogName
, szSchemaName
, cbSchemaName
, szTableName
,
3286 TRACE("Returning %d\n", ret
);
3290 /*************************************************************************
3291 * SQLDriversW [ODBC32.171]
3293 SQLRETURN WINAPI
SQLDriversW(SQLHENV EnvironmentHandle
, SQLUSMALLINT fDirection
, SQLWCHAR
*szDriverDesc
,
3294 SQLSMALLINT cbDriverDescMax
, SQLSMALLINT
*pcbDriverDesc
,
3295 SQLWCHAR
*szDriverAttributes
, SQLSMALLINT cbDriverAttrMax
,
3296 SQLSMALLINT
*pcbDriverAttr
)
3300 TRACE("(EnvironmentHandle %p, Direction %d, szDriverDesc %p, cbDriverDescMax %d, pcbDriverDesc %p,"
3301 " DriverAttributes %p, cbDriverAttrMax %d, pcbDriverAttr %p)\n", EnvironmentHandle
, fDirection
,
3302 szDriverDesc
, cbDriverDescMax
, pcbDriverDesc
, szDriverAttributes
, cbDriverAttrMax
, pcbDriverAttr
);
3304 ret
= sql_funcs
.pSQLDriversW(EnvironmentHandle
, fDirection
, szDriverDesc
, cbDriverDescMax
, pcbDriverDesc
,
3305 szDriverAttributes
, cbDriverAttrMax
, pcbDriverAttr
);
3307 if (ret
== SQL_NO_DATA
&& fDirection
== SQL_FETCH_FIRST
)
3308 ERR_(winediag
)("No ODBC drivers could be found. Check the settings for your libodbc provider.\n");
3310 TRACE("Returning %d\n", ret
);
3314 /*************************************************************************
3315 * SQLSetDescFieldW [ODBC32.173]
3317 SQLRETURN WINAPI
SQLSetDescFieldW(SQLHDESC DescriptorHandle
, SQLSMALLINT RecNumber
, SQLSMALLINT FieldIdentifier
,
3318 SQLPOINTER Value
, SQLINTEGER BufferLength
)
3322 TRACE("(DescriptorHandle %p, RecNumber %d, FieldIdentifier %d, Value %p, BufferLength %d)\n", DescriptorHandle
,
3323 RecNumber
, FieldIdentifier
, Value
, BufferLength
);
3325 ret
= sql_funcs
.pSQLSetDescFieldW(DescriptorHandle
, RecNumber
, FieldIdentifier
, Value
, BufferLength
);
3326 TRACE("Returning %d\n", ret
);
3330 /*************************************************************************
3331 * SQLSetStmtAttrW [ODBC32.176]
3333 SQLRETURN WINAPI
SQLSetStmtAttrW(SQLHSTMT StatementHandle
, SQLINTEGER Attribute
, SQLPOINTER Value
,
3334 SQLINTEGER StringLength
)
3338 TRACE("(StatementHandle %p, Attribute %d, Value %p, StringLength %d)\n", StatementHandle
, Attribute
, Value
,
3341 ret
= sql_funcs
.pSQLSetStmtAttrW(StatementHandle
, Attribute
, Value
, StringLength
);
3342 if (ret
== SQL_ERROR
&& (Attribute
== SQL_ROWSET_SIZE
|| Attribute
== SQL_ATTR_ROW_ARRAY_SIZE
))
3344 TRACE("CHEAT: returning SQL_SUCCESS to ADO\n");
3348 TRACE("Returning %d\n", ret
);
3352 /*************************************************************************
3353 * SQLGetDiagRecA [ODBC32.236]
3355 SQLRETURN WINAPI
SQLGetDiagRecA(SQLSMALLINT HandleType
, SQLHANDLE Handle
, SQLSMALLINT RecNumber
,
3356 SQLCHAR
*Sqlstate
, SQLINTEGER
*NativeError
, SQLCHAR
*MessageText
,
3357 SQLSMALLINT BufferLength
, SQLSMALLINT
*TextLength
)
3361 TRACE("(HandleType %d, Handle %p, RecNumber %d, Sqlstate %p, NativeError %p, MessageText %p, BufferLength %d,"
3362 " TextLength %p)\n", HandleType
, Handle
, RecNumber
, Sqlstate
, NativeError
, MessageText
, BufferLength
,
3365 ret
= sql_funcs
.pSQLGetDiagRecA(HandleType
, Handle
, RecNumber
, Sqlstate
, NativeError
, MessageText
, BufferLength
, TextLength
);
3366 TRACE("Returning %d\n", ret
);
3371 /***********************************************************************
3372 * DllMain [Internal] Initializes the internal 'ODBC32.DLL'.
3374 BOOL WINAPI
DllMain(HINSTANCE hinstDLL
, DWORD reason
, LPVOID reserved
)
3376 TRACE("proxy ODBC: %p,%x,%p\n", hinstDLL
, reason
, reserved
);
3380 case DLL_PROCESS_ATTACH
:
3381 DisableThreadLibraryCalls(hinstDLL
);
3382 if (!__wine_init_unix_lib( hinstDLL
, reason
, NULL
, &sql_funcs
)) ODBC_ReplicateToRegistry();
3385 case DLL_PROCESS_DETACH
:
3386 if (reserved
) break;
3387 __wine_init_unix_lib( hinstDLL
, reason
, NULL
, NULL
);