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.
35 #include <sys/types.h>
39 #define WIN32_NO_STATUS
43 #include "wine/debug.h"
49 #include "wine/debug.h"
51 WINE_DECLARE_DEBUG_CHANNEL(winediag
);
55 static SQLRETURN (*pSQLAllocConnect
)(SQLHENV
,SQLHDBC
*);
56 static SQLRETURN (*pSQLAllocEnv
)(SQLHENV
*);
57 static SQLRETURN (*pSQLAllocHandle
)(SQLSMALLINT
,SQLHANDLE
,SQLHANDLE
*);
58 static SQLRETURN (*pSQLAllocHandleStd
)(SQLSMALLINT
,SQLHANDLE
,SQLHANDLE
*);
59 static SQLRETURN (*pSQLAllocStmt
)(SQLHDBC
,SQLHSTMT
*);
60 static SQLRETURN (*pSQLBindCol
)(SQLHSTMT
,SQLUSMALLINT
,SQLSMALLINT
,SQLPOINTER
,SQLLEN
,SQLLEN
*);
61 static SQLRETURN (*pSQLBindParam
)(SQLHSTMT
,SQLUSMALLINT
,SQLSMALLINT
,SQLSMALLINT
,SQLULEN
,SQLSMALLINT
,SQLPOINTER
,SQLLEN
*);
62 static SQLRETURN (*pSQLBindParameter
)(SQLHSTMT
,SQLUSMALLINT
,SQLSMALLINT
,SQLSMALLINT
,SQLSMALLINT
,SQLULEN
,SQLSMALLINT
,SQLPOINTER
,SQLLEN
,SQLLEN
*);
63 static SQLRETURN (*pSQLBrowseConnect
)(SQLHDBC
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLSMALLINT
*);
64 static SQLRETURN (*pSQLBrowseConnectW
)(SQLHDBC
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLSMALLINT
*);
65 static SQLRETURN (*pSQLBulkOperations
)(SQLHSTMT
,SQLSMALLINT
);
66 static SQLRETURN (*pSQLCancel
)(SQLHSTMT
);
67 static SQLRETURN (*pSQLCloseCursor
)(SQLHSTMT
);
68 static SQLRETURN (*pSQLColAttribute
)(SQLHSTMT
,SQLUSMALLINT
,SQLUSMALLINT
,SQLPOINTER
,SQLSMALLINT
,SQLSMALLINT
*,SQLLEN
*);
69 static SQLRETURN (*pSQLColAttributeW
)(SQLHSTMT
,SQLUSMALLINT
,SQLUSMALLINT
,SQLPOINTER
,SQLSMALLINT
,SQLSMALLINT
*,SQLLEN
*);
70 static SQLRETURN (*pSQLColAttributes
)(SQLHSTMT
,SQLUSMALLINT
,SQLUSMALLINT
,SQLPOINTER
,SQLSMALLINT
,SQLSMALLINT
*,SQLLEN
*);
71 static SQLRETURN (*pSQLColAttributesW
)(SQLHSTMT
,SQLUSMALLINT
,SQLUSMALLINT
,SQLPOINTER
,SQLSMALLINT
,SQLSMALLINT
*,SQLLEN
*);
72 static SQLRETURN (*pSQLColumnPrivileges
)(SQLHSTMT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
);
73 static SQLRETURN (*pSQLColumnPrivilegesW
)(SQLHSTMT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
);
74 static SQLRETURN (*pSQLColumns
)(SQLHSTMT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
);
75 static SQLRETURN (*pSQLColumnsW
)(SQLHSTMT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
);
76 static SQLRETURN (*pSQLConnect
)(SQLHDBC
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
);
77 static SQLRETURN (*pSQLConnectW
)(SQLHDBC
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
);
78 static SQLRETURN (*pSQLCopyDesc
)(SQLHDESC
,SQLHDESC
);
79 static SQLRETURN (*pSQLDataSources
)(SQLHENV
,SQLUSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLSMALLINT
*,SQLCHAR
*,SQLSMALLINT
,SQLSMALLINT
*);
80 static SQLRETURN (*pSQLDataSourcesA
)(SQLHENV
,SQLUSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLSMALLINT
*,SQLCHAR
*,SQLSMALLINT
,SQLSMALLINT
*);
81 static SQLRETURN (*pSQLDataSourcesW
)(SQLHENV
,SQLUSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLSMALLINT
*,SQLWCHAR
*,SQLSMALLINT
,SQLSMALLINT
*);
82 static SQLRETURN (*pSQLDescribeCol
)(SQLHSTMT
,SQLUSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLSMALLINT
*,SQLSMALLINT
*,SQLULEN
*,SQLSMALLINT
*,SQLSMALLINT
*);
83 static SQLRETURN (*pSQLDescribeColW
)(SQLHSTMT
,SQLUSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLSMALLINT
*,SQLSMALLINT
*,SQLULEN
*,SQLSMALLINT
*,SQLSMALLINT
*);
84 static SQLRETURN (*pSQLDescribeParam
)(SQLHSTMT
,SQLUSMALLINT
,SQLSMALLINT
*,SQLULEN
*,SQLSMALLINT
*,SQLSMALLINT
*);
85 static SQLRETURN (*pSQLDisconnect
)(SQLHDBC
);
86 static SQLRETURN (*pSQLDriverConnect
)(SQLHDBC
,SQLHWND
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLSMALLINT
*,SQLUSMALLINT
);
87 static SQLRETURN (*pSQLDriverConnectW
)(SQLHDBC
,SQLHWND
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLSMALLINT
*,SQLUSMALLINT
);
88 static SQLRETURN (*pSQLDrivers
)(SQLHENV
,SQLUSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLSMALLINT
*,SQLCHAR
*,SQLSMALLINT
,SQLSMALLINT
*);
89 static SQLRETURN (*pSQLDriversW
)(SQLHENV
,SQLUSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLSMALLINT
*,SQLWCHAR
*,SQLSMALLINT
,SQLSMALLINT
*);
90 static SQLRETURN (*pSQLEndTran
)(SQLSMALLINT
,SQLHANDLE
,SQLSMALLINT
);
91 static SQLRETURN (*pSQLError
)(SQLHENV
,SQLHDBC
,SQLHSTMT
,SQLCHAR
*,SQLINTEGER
*,SQLCHAR
*,SQLSMALLINT
,SQLSMALLINT
*);
92 static SQLRETURN (*pSQLErrorW
)(SQLHENV
,SQLHDBC
,SQLHSTMT
,SQLWCHAR
*,SQLINTEGER
*,SQLWCHAR
*,SQLSMALLINT
,SQLSMALLINT
*);
93 static SQLRETURN (*pSQLExecDirect
)(SQLHSTMT
,SQLCHAR
*,SQLINTEGER
);
94 static SQLRETURN (*pSQLExecDirectW
)(SQLHSTMT
,SQLWCHAR
*,SQLINTEGER
);
95 static SQLRETURN (*pSQLExecute
)(SQLHSTMT
);
96 static SQLRETURN (*pSQLExtendedFetch
)(SQLHSTMT
,SQLUSMALLINT
,SQLLEN
,SQLULEN
*,SQLUSMALLINT
*);
97 static SQLRETURN (*pSQLFetch
)(SQLHSTMT
);
98 static SQLRETURN (*pSQLFetchScroll
)(SQLHSTMT
,SQLSMALLINT
,SQLLEN
);
99 static SQLRETURN (*pSQLForeignKeys
)(SQLHSTMT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
);
100 static SQLRETURN (*pSQLForeignKeysW
)(SQLHSTMT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
);
101 static SQLRETURN (*pSQLFreeConnect
)(SQLHDBC
);
102 static SQLRETURN (*pSQLFreeEnv
)(SQLHENV
);
103 static SQLRETURN (*pSQLFreeHandle
)(SQLSMALLINT
,SQLHANDLE
);
104 static SQLRETURN (*pSQLFreeStmt
)(SQLHSTMT
,SQLUSMALLINT
);
105 static SQLRETURN (*pSQLGetConnectAttr
)(SQLHDBC
,SQLINTEGER
,SQLPOINTER
,SQLINTEGER
,SQLINTEGER
*);
106 static SQLRETURN (*pSQLGetConnectAttrW
)(SQLHDBC
,SQLINTEGER
,SQLPOINTER
,SQLINTEGER
,SQLINTEGER
*);
107 static SQLRETURN (*pSQLGetConnectOption
)(SQLHDBC
,SQLUSMALLINT
,SQLPOINTER
);
108 static SQLRETURN (*pSQLGetConnectOptionW
)(SQLHDBC
,SQLUSMALLINT
,SQLPOINTER
);
109 static SQLRETURN (*pSQLGetCursorName
)(SQLHSTMT
,SQLCHAR
*,SQLSMALLINT
,SQLSMALLINT
*);
110 static SQLRETURN (*pSQLGetCursorNameW
)(SQLHSTMT
,SQLWCHAR
*,SQLSMALLINT
,SQLSMALLINT
*);
111 static SQLRETURN (*pSQLGetData
)(SQLHSTMT
,SQLUSMALLINT
,SQLSMALLINT
,SQLPOINTER
,SQLLEN
,SQLLEN
*);
112 static SQLRETURN (*pSQLGetDescField
)(SQLHDESC
,SQLSMALLINT
,SQLSMALLINT
,SQLPOINTER
,SQLINTEGER
,SQLINTEGER
*);
113 static SQLRETURN (*pSQLGetDescFieldW
)(SQLHDESC
,SQLSMALLINT
,SQLSMALLINT
,SQLPOINTER
,SQLINTEGER
,SQLINTEGER
*);
114 static SQLRETURN (*pSQLGetDescRec
)(SQLHDESC
,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLSMALLINT
*,SQLSMALLINT
*,SQLSMALLINT
*,SQLLEN
*,SQLSMALLINT
*,SQLSMALLINT
*,SQLSMALLINT
*);
115 static SQLRETURN (*pSQLGetDescRecW
)(SQLHDESC
,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLSMALLINT
*,SQLSMALLINT
*,SQLSMALLINT
*,SQLLEN
*,SQLSMALLINT
*,SQLSMALLINT
*,SQLSMALLINT
*);
116 static SQLRETURN (*pSQLGetDiagField
)(SQLSMALLINT
,SQLHANDLE
,SQLSMALLINT
,SQLSMALLINT
,SQLPOINTER
,SQLSMALLINT
,SQLSMALLINT
*);
117 static SQLRETURN (*pSQLGetDiagFieldW
)(SQLSMALLINT
,SQLHANDLE
,SQLSMALLINT
,SQLSMALLINT
,SQLPOINTER
,SQLSMALLINT
,SQLSMALLINT
*);
118 static SQLRETURN (*pSQLGetDiagRec
)(SQLSMALLINT
,SQLHANDLE
,SQLSMALLINT
,SQLCHAR
*,SQLINTEGER
*,SQLCHAR
*,SQLSMALLINT
,SQLSMALLINT
*);
119 static SQLRETURN (*pSQLGetDiagRecA
)(SQLSMALLINT
,SQLHANDLE
,SQLSMALLINT
,SQLCHAR
*,SQLINTEGER
*, SQLCHAR
*,SQLSMALLINT
,SQLSMALLINT
*);
120 static SQLRETURN (*pSQLGetDiagRecW
)(SQLSMALLINT
,SQLHANDLE
,SQLSMALLINT
,SQLWCHAR
*,SQLINTEGER
*,SQLWCHAR
*,SQLSMALLINT
,SQLSMALLINT
*);
121 static SQLRETURN (*pSQLGetEnvAttr
)(SQLHENV
,SQLINTEGER
,SQLPOINTER
,SQLINTEGER
,SQLINTEGER
*);
122 static SQLRETURN (*pSQLGetFunctions
)(SQLHDBC
,SQLUSMALLINT
,SQLUSMALLINT
*);
123 static SQLRETURN (*pSQLGetInfo
)(SQLHDBC
,SQLUSMALLINT
,SQLPOINTER
,SQLSMALLINT
,SQLSMALLINT
*);
124 static SQLRETURN (*pSQLGetInfoW
)(SQLHDBC
,SQLUSMALLINT
,SQLPOINTER
,SQLSMALLINT
,SQLSMALLINT
*);
125 static SQLRETURN (*pSQLGetStmtAttr
)(SQLHSTMT
,SQLINTEGER
,SQLPOINTER
,SQLINTEGER
,SQLINTEGER
*);
126 static SQLRETURN (*pSQLGetStmtAttrW
)(SQLHSTMT
,SQLINTEGER
,SQLPOINTER
,SQLINTEGER
,SQLINTEGER
*);
127 static SQLRETURN (*pSQLGetStmtOption
)(SQLHSTMT
,SQLUSMALLINT
,SQLPOINTER
);
128 static SQLRETURN (*pSQLGetTypeInfo
)(SQLHSTMT
,SQLSMALLINT
);
129 static SQLRETURN (*pSQLGetTypeInfoW
)(SQLHSTMT
,SQLSMALLINT
);
130 static SQLRETURN (*pSQLMoreResults
)(SQLHSTMT
);
131 static SQLRETURN (*pSQLNativeSql
)(SQLHDBC
,SQLCHAR
*,SQLINTEGER
,SQLCHAR
*,SQLINTEGER
,SQLINTEGER
*);
132 static SQLRETURN (*pSQLNativeSqlW
)(SQLHDBC
,SQLWCHAR
*,SQLINTEGER
,SQLWCHAR
*,SQLINTEGER
,SQLINTEGER
*);
133 static SQLRETURN (*pSQLNumParams
)(SQLHSTMT
,SQLSMALLINT
*);
134 static SQLRETURN (*pSQLNumResultCols
)(SQLHSTMT
,SQLSMALLINT
*);
135 static SQLRETURN (*pSQLParamData
)(SQLHSTMT
,SQLPOINTER
*);
136 static SQLRETURN (*pSQLParamOptions
)(SQLHSTMT
,SQLULEN
,SQLULEN
*);
137 static SQLRETURN (*pSQLPrepare
)(SQLHSTMT
,SQLCHAR
*,SQLINTEGER
);
138 static SQLRETURN (*pSQLPrepareW
)(SQLHSTMT
,SQLWCHAR
*,SQLINTEGER
);
139 static SQLRETURN (*pSQLPrimaryKeys
)(SQLHSTMT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
);
140 static SQLRETURN (*pSQLPrimaryKeysW
)(SQLHSTMT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
);
141 static SQLRETURN (*pSQLProcedureColumns
)(SQLHSTMT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
);
142 static SQLRETURN (*pSQLProcedureColumnsW
)(SQLHSTMT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
);
143 static SQLRETURN (*pSQLProcedures
)(SQLHSTMT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
);
144 static SQLRETURN (*pSQLProceduresW
)(SQLHSTMT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
);
145 static SQLRETURN (*pSQLPutData
)(SQLHSTMT
,SQLPOINTER
,SQLLEN
);
146 static SQLRETURN (*pSQLRowCount
)(SQLHSTMT
,SQLLEN
*);
147 static SQLRETURN (*pSQLSetConnectAttr
)(SQLHDBC
,SQLINTEGER
,SQLPOINTER
,SQLINTEGER
);
148 static SQLRETURN (*pSQLSetConnectAttrW
)(SQLHDBC
,SQLINTEGER
,SQLPOINTER
,SQLINTEGER
);
149 static SQLRETURN (*pSQLSetConnectOption
)(SQLHDBC
,SQLUSMALLINT
,SQLULEN
);
150 static SQLRETURN (*pSQLSetConnectOptionW
)(SQLHDBC
,SQLUSMALLINT
,SQLULEN
);
151 static SQLRETURN (*pSQLSetCursorName
)(SQLHSTMT
,SQLCHAR
*,SQLSMALLINT
);
152 static SQLRETURN (*pSQLSetCursorNameW
)(SQLHSTMT
,SQLWCHAR
*,SQLSMALLINT
);
153 static SQLRETURN (*pSQLSetDescField
)(SQLHDESC
,SQLSMALLINT
,SQLSMALLINT
,SQLPOINTER
,SQLINTEGER
);
154 static SQLRETURN (*pSQLSetDescFieldW
)(SQLHDESC
,SQLSMALLINT
,SQLSMALLINT
,SQLPOINTER
,SQLINTEGER
);
155 static SQLRETURN (*pSQLSetDescRec
)(SQLHDESC
,SQLSMALLINT
,SQLSMALLINT
,SQLSMALLINT
,SQLLEN
,SQLSMALLINT
,SQLSMALLINT
,SQLPOINTER
,SQLLEN
*,SQLLEN
*);
156 static SQLRETURN (*pSQLSetEnvAttr
)(SQLHENV
,SQLINTEGER
,SQLPOINTER
,SQLINTEGER
);
157 static SQLRETURN (*pSQLSetParam
)(SQLHSTMT
,SQLUSMALLINT
,SQLSMALLINT
,SQLSMALLINT
,SQLULEN
,SQLSMALLINT
,SQLPOINTER
,SQLLEN
*);
158 static SQLRETURN (*pSQLSetPos
)(SQLHSTMT
,SQLSETPOSIROW
,SQLUSMALLINT
,SQLUSMALLINT
);
159 static SQLRETURN (*pSQLSetScrollOptions
)(SQLHSTMT
,SQLUSMALLINT
,SQLLEN
,SQLUSMALLINT
);
160 static SQLRETURN (*pSQLSetStmtAttr
)(SQLHSTMT
,SQLINTEGER
,SQLPOINTER
,SQLINTEGER
);
161 static SQLRETURN (*pSQLSetStmtAttrW
)(SQLHSTMT
,SQLINTEGER
,SQLPOINTER
,SQLINTEGER
);
162 static SQLRETURN (*pSQLSetStmtOption
)(SQLHSTMT
,SQLUSMALLINT
,SQLULEN
);
163 static SQLRETURN (*pSQLSpecialColumns
)(SQLHSTMT
,SQLUSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLUSMALLINT
,SQLUSMALLINT
);
164 static SQLRETURN (*pSQLSpecialColumnsW
)(SQLHSTMT
,SQLUSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLUSMALLINT
,SQLUSMALLINT
);
165 static SQLRETURN (*pSQLStatistics
)(SQLHSTMT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLUSMALLINT
,SQLUSMALLINT
);
166 static SQLRETURN (*pSQLStatisticsW
)(SQLHSTMT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLUSMALLINT
,SQLUSMALLINT
);
167 static SQLRETURN (*pSQLTablePrivileges
)(SQLHSTMT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
);
168 static SQLRETURN (*pSQLTablePrivilegesW
)(SQLHSTMT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
);
169 static SQLRETURN (*pSQLTables
)(SQLHSTMT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
,SQLCHAR
*,SQLSMALLINT
);
170 static SQLRETURN (*pSQLTablesW
)(SQLHSTMT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
,SQLWCHAR
*,SQLSMALLINT
);
171 static SQLRETURN (*pSQLTransact
)(SQLHENV
,SQLHDBC
,SQLUSMALLINT
);
174 static NTSTATUS
load_odbc(void);
176 static NTSTATUS
odbc_process_attach( void *args
)
178 if (!load_odbc()) return STATUS_DLL_NOT_FOUND
;
179 return STATUS_SUCCESS
;
182 static NTSTATUS
odbc_process_detach( void *args
)
184 if (libodbc
) dlclose( libodbc
);
186 return STATUS_SUCCESS
;
189 static NTSTATUS
wrap_SQLAllocConnect( void *args
)
191 struct SQLAllocConnect_params
*params
= args
;
193 if (!pSQLAllocConnect
) return SQL_ERROR
;
194 return pSQLAllocConnect(params
->EnvironmentHandle
, params
->ConnectionHandle
);
197 static NTSTATUS
wrap_SQLAllocEnv( void *args
)
199 struct SQLAllocEnv_params
*params
= args
;
201 if (!pSQLAllocEnv
) return SQL_ERROR
;
202 return pSQLAllocEnv(params
->EnvironmentHandle
);
205 static NTSTATUS
wrap_SQLAllocHandle( void *args
)
207 struct SQLAllocHandle_params
*params
= args
;
209 if (!pSQLAllocHandle
) return SQL_ERROR
;
210 return pSQLAllocHandle(params
->HandleType
, params
->InputHandle
, params
->OutputHandle
);
213 static NTSTATUS
wrap_SQLAllocHandleStd( void *args
)
215 struct SQLAllocHandleStd_params
*params
= args
;
217 if (!pSQLAllocHandleStd
) return SQL_ERROR
;
218 return pSQLAllocHandleStd(params
->HandleType
, params
->InputHandle
, params
->OutputHandle
);
221 static NTSTATUS
wrap_SQLAllocStmt( void *args
)
223 struct SQLAllocStmt_params
*params
= args
;
225 if (!pSQLAllocStmt
) return SQL_ERROR
;
226 return pSQLAllocStmt(params
->ConnectionHandle
, params
->StatementHandle
);
229 static NTSTATUS
wrap_SQLBindCol( void *args
)
231 struct SQLBindCol_params
*params
= args
;
233 if (!pSQLBindCol
) return SQL_ERROR
;
234 return pSQLBindCol(params
->StatementHandle
, params
->ColumnNumber
, params
->TargetType
,
235 params
->TargetValue
, params
->BufferLength
, params
->StrLen_or_Ind
);
238 static NTSTATUS
wrap_SQLBindParam( void *args
)
240 struct SQLBindParam_params
*params
= args
;
242 if (!pSQLBindParam
) return SQL_ERROR
;
243 return pSQLBindParam(params
->StatementHandle
, params
->ParameterNumber
, params
->ValueType
,
244 params
->ParameterType
, params
->LengthPrecision
, params
->ParameterScale
,
245 params
->ParameterValue
, params
->StrLen_or_Ind
);
248 static NTSTATUS
wrap_SQLBindParameter( void *args
)
250 struct SQLBindParameter_params
*params
= args
;
252 if (!pSQLBindParameter
) return SQL_ERROR
;
253 return pSQLBindParameter(params
->hstmt
, params
->ipar
, params
->fParamType
, params
->fCType
,
254 params
->fSqlType
, params
->cbColDef
, params
->ibScale
, params
->rgbValue
,
255 params
->cbValueMax
, params
->pcbValue
);
258 static NTSTATUS
wrap_SQLBrowseConnect( void *args
)
260 struct SQLBrowseConnect_params
*params
= args
;
262 if (!pSQLBrowseConnect
) return SQL_ERROR
;
263 return pSQLBrowseConnect(params
->hdbc
, params
->szConnStrIn
, params
->cbConnStrIn
, params
->szConnStrOut
,
264 params
->cbConnStrOutMax
, params
->pcbConnStrOut
);
267 static NTSTATUS
wrap_SQLBrowseConnectW( void *args
)
269 struct SQLBrowseConnectW_params
*params
= args
;
271 if (!pSQLBrowseConnectW
) return SQL_ERROR
;
272 return pSQLBrowseConnectW(params
->hdbc
, params
->szConnStrIn
, params
->cbConnStrIn
, params
->szConnStrOut
,
273 params
->cbConnStrOutMax
, params
->pcbConnStrOut
);
276 static NTSTATUS
wrap_SQLBulkOperations( void *args
)
278 struct SQLBulkOperations_params
*params
= args
;
280 if (!pSQLBulkOperations
) return SQL_ERROR
;
281 return pSQLBulkOperations(params
->StatementHandle
, params
->Operation
);
284 static NTSTATUS
wrap_SQLCancel( void *args
)
286 struct SQLCancel_params
*params
= args
;
288 if (!pSQLCancel
) return SQL_ERROR
;
289 return pSQLCancel(params
->StatementHandle
);
292 static NTSTATUS
wrap_SQLCloseCursor( void *args
)
294 struct SQLCloseCursor_params
*params
= args
;
296 if (!pSQLCloseCursor
) return SQL_ERROR
;
297 return pSQLCloseCursor(params
->StatementHandle
);
300 static NTSTATUS
wrap_SQLColAttribute( void *args
)
302 struct SQLColAttribute_params
*params
= args
;
304 if (!pSQLColAttribute
) return SQL_ERROR
;
305 return pSQLColAttribute(params
->StatementHandle
, params
->ColumnNumber
, params
->FieldIdentifier
,
306 params
->CharacterAttribute
, params
->BufferLength
, params
->StringLength
,
307 params
->NumericAttribute
);
310 static NTSTATUS
wrap_SQLColAttributeW( void *args
)
312 struct SQLColAttributeW_params
*params
= args
;
314 if (!pSQLColAttributeW
) return SQL_ERROR
;
315 return pSQLColAttributeW(params
->StatementHandle
, params
->ColumnNumber
, params
->FieldIdentifier
,
316 params
->CharacterAttribute
, params
->BufferLength
, params
->StringLength
,
317 params
->NumericAttribute
);
320 static NTSTATUS
wrap_SQLColAttributes( void *args
)
322 struct SQLColAttributes_params
*params
= args
;
324 if (!pSQLColAttributes
) return SQL_ERROR
;
325 return pSQLColAttributes(params
->hstmt
, params
->icol
, params
->fDescType
, params
->rgbDesc
,
326 params
->cbDescMax
, params
->pcbDesc
, params
->pfDesc
);
329 static NTSTATUS
wrap_SQLColAttributesW( void *args
)
331 struct SQLColAttributesW_params
*params
= args
;
333 if (!pSQLColAttributesW
) return SQL_ERROR
;
334 return pSQLColAttributesW(params
->hstmt
, params
->icol
, params
->fDescType
, params
->rgbDesc
,
335 params
->cbDescMax
, params
->pcbDesc
, params
->pfDesc
);
338 static NTSTATUS
wrap_SQLColumnPrivileges( void *args
)
340 struct SQLColumnPrivileges_params
*params
= args
;
342 if (!pSQLColumnPrivileges
) return SQL_ERROR
;
343 return pSQLColumnPrivileges(params
->hstmt
, params
->szCatalogName
, params
->cbCatalogName
,
344 params
->szSchemaName
, params
->cbSchemaName
, params
->szTableName
,
345 params
->cbTableName
, params
->szColumnName
, params
->cbColumnName
);
348 static NTSTATUS
wrap_SQLColumnPrivilegesW( void *args
)
350 struct SQLColumnPrivilegesW_params
*params
= args
;
352 if (!pSQLColumnPrivilegesW
) return SQL_ERROR
;
353 return pSQLColumnPrivilegesW(params
->hstmt
, params
->szCatalogName
, params
->cbCatalogName
,
354 params
->szSchemaName
, params
->cbSchemaName
, params
->szTableName
,
355 params
->cbTableName
, params
->szColumnName
, params
->cbColumnName
);
358 static NTSTATUS
wrap_SQLColumns( void *args
)
360 struct SQLColumns_params
*params
= args
;
362 if (!pSQLColumns
) return SQL_ERROR
;
363 return pSQLColumns(params
->StatementHandle
, params
->CatalogName
, params
->NameLength1
,
364 params
->SchemaName
, params
->NameLength2
, params
->TableName
, params
->NameLength3
,
365 params
->ColumnName
, params
->NameLength4
);
368 static NTSTATUS
wrap_SQLColumnsW( void *args
)
370 struct SQLColumnsW_params
*params
= args
;
372 if (!pSQLColumnsW
) return SQL_ERROR
;
373 return pSQLColumnsW(params
->StatementHandle
, params
->CatalogName
, params
->NameLength1
,
374 params
->SchemaName
, params
->NameLength2
, params
->TableName
, params
->NameLength3
,
375 params
->ColumnName
, params
->NameLength4
);
378 static NTSTATUS
wrap_SQLConnect( void *args
)
380 struct SQLConnect_params
*params
= args
;
382 if (!pSQLConnect
) return SQL_ERROR
;
383 return pSQLConnect(params
->ConnectionHandle
, params
->ServerName
, params
->NameLength1
, params
->UserName
,
384 params
->NameLength2
, params
->Authentication
, params
->NameLength3
);
387 static NTSTATUS
wrap_SQLConnectW( void *args
)
389 struct SQLConnectW_params
*params
= args
;
391 if (!pSQLConnectW
) return SQL_ERROR
;
392 return pSQLConnectW(params
->ConnectionHandle
, params
->ServerName
, params
->NameLength1
,
393 params
->UserName
, params
->NameLength2
, params
->Authentication
, params
->NameLength3
);
396 static NTSTATUS
wrap_SQLCopyDesc( void *args
)
398 struct SQLCopyDesc_params
*params
= args
;
400 if (!pSQLCopyDesc
) return SQL_ERROR
;
401 return pSQLCopyDesc(params
->SourceDescHandle
, params
->TargetDescHandle
);
404 static NTSTATUS
wrap_SQLDataSources( void *args
)
406 struct SQLDataSources_params
*params
= args
;
408 if (!pSQLDataSources
) return SQL_ERROR
;
409 return pSQLDataSources(params
->EnvironmentHandle
, params
->Direction
, params
->ServerName
,
410 params
->BufferLength1
, params
->NameLength1
, params
->Description
,
411 params
->BufferLength2
, params
->NameLength2
);
414 static NTSTATUS
wrap_SQLDataSourcesA( void *args
)
416 struct SQLDataSourcesA_params
*params
= args
;
418 if (!pSQLDataSourcesA
) return SQL_ERROR
;
419 return pSQLDataSourcesA(params
->EnvironmentHandle
, params
->Direction
, params
->ServerName
,
420 params
->BufferLength1
, params
->NameLength1
, params
->Description
,
421 params
->BufferLength2
, params
->NameLength2
);
424 static NTSTATUS
wrap_SQLDataSourcesW( void *args
)
426 struct SQLDataSourcesW_params
*params
= args
;
428 if (!pSQLDataSourcesW
) return SQL_ERROR
;
429 return pSQLDataSourcesW(params
->EnvironmentHandle
, params
->Direction
, params
->ServerName
,
430 params
->BufferLength1
, params
->NameLength1
, params
->Description
,
431 params
->BufferLength2
, params
->NameLength2
);
434 static NTSTATUS
wrap_SQLDescribeCol( void *args
)
436 struct SQLDescribeCol_params
*params
= args
;
438 if (!pSQLDescribeCol
) return SQL_ERROR
;
439 return pSQLDescribeCol(params
->StatementHandle
, params
->ColumnNumber
, params
->ColumnName
,
440 params
->BufferLength
, params
->NameLength
, params
->DataType
,
441 params
->ColumnSize
, params
->DecimalDigits
, params
->Nullable
);
444 static NTSTATUS
wrap_SQLDescribeColW( void *args
)
446 struct SQLDescribeColW_params
*params
= args
;
448 if (!pSQLDescribeColW
) return SQL_ERROR
;
449 return pSQLDescribeColW(params
->StatementHandle
, params
->ColumnNumber
, params
->ColumnName
,
450 params
->BufferLength
, params
->NameLength
, params
->DataType
,
451 params
->ColumnSize
, params
->DecimalDigits
, params
->Nullable
);
454 static NTSTATUS
wrap_SQLDescribeParam( void *args
)
456 struct SQLDescribeParam_params
*params
= args
;
458 if (!pSQLDescribeParam
) return SQL_ERROR
;
459 return pSQLDescribeParam(params
->hstmt
, params
->ipar
, params
->pfSqlType
, params
->pcbParamDef
,
460 params
->pibScale
, params
->pfNullable
);
463 static NTSTATUS
wrap_SQLDisconnect( void *args
)
465 struct SQLDisconnect_params
*params
= args
;
467 if (!pSQLDisconnect
) return SQL_ERROR
;
468 return pSQLDisconnect(params
->ConnectionHandle
);
471 static NTSTATUS
wrap_SQLDriverConnect( void *args
)
473 struct SQLDriverConnect_params
*params
= args
;
475 if (!pSQLDriverConnect
) return SQL_ERROR
;
476 return pSQLDriverConnect(params
->hdbc
, params
->hwnd
, params
->ConnectionString
, params
->Length
,
477 params
->conn_str_out
, params
->conn_str_out_max
,
478 params
->ptr_conn_str_out
, params
->driver_completion
);
481 static NTSTATUS
wrap_SQLDriverConnectW( void *args
)
483 struct SQLDriverConnectW_params
*params
= args
;
485 if (!pSQLDriverConnectW
) return SQL_ERROR
;
486 return pSQLDriverConnectW(params
->ConnectionHandle
, params
->WindowHandle
, params
->InConnectionString
,
487 params
->Length
, params
->OutConnectionString
, params
->BufferLength
,
488 params
->Length2
, params
->DriverCompletion
);
491 static NTSTATUS
wrap_SQLDrivers( void *args
)
493 struct SQLDrivers_params
*params
= args
;
495 if (!pSQLDrivers
) return SQL_ERROR
;
496 return pSQLDrivers(params
->EnvironmentHandle
, params
->fDirection
, params
->szDriverDesc
,
497 params
->cbDriverDescMax
, params
->pcbDriverDesc
, params
->szDriverAttributes
,
498 params
->cbDriverAttrMax
, params
->pcbDriverAttr
);
501 static NTSTATUS
wrap_SQLDriversW( void *args
)
503 struct SQLDriversW_params
*params
= args
;
505 if (!pSQLDriversW
) return SQL_ERROR
;
506 return pSQLDriversW(params
->EnvironmentHandle
, params
->fDirection
, params
->szDriverDesc
,
507 params
->cbDriverDescMax
, params
->pcbDriverDesc
, params
->szDriverAttributes
,
508 params
->cbDriverAttrMax
, params
->pcbDriverAttr
);
511 static NTSTATUS
wrap_SQLEndTran( void *args
)
513 struct SQLEndTran_params
*params
= args
;
515 if (!pSQLEndTran
) return SQL_ERROR
;
516 return pSQLEndTran(params
->HandleType
, params
->Handle
, params
->CompletionType
);
519 static NTSTATUS
wrap_SQLError( void *args
)
521 struct SQLError_params
*params
= args
;
523 if (!pSQLError
) return SQL_ERROR
;
524 return pSQLError(params
->EnvironmentHandle
, params
->ConnectionHandle
, params
->StatementHandle
,
525 params
->Sqlstate
, params
->NativeError
, params
->MessageText
,
526 params
->BufferLength
, params
->TextLength
);
529 static NTSTATUS
wrap_SQLErrorW( void *args
)
531 struct SQLErrorW_params
*params
= args
;
533 if (!pSQLErrorW
) return SQL_ERROR
;
534 return pSQLErrorW(params
->EnvironmentHandle
, params
->ConnectionHandle
, params
->StatementHandle
,
535 params
->Sqlstate
, params
->NativeError
, params
->MessageText
,
536 params
->BufferLength
, params
->TextLength
);
539 static NTSTATUS
wrap_SQLExecDirect( void *args
)
541 struct SQLExecDirect_params
*params
= args
;
543 if (!pSQLExecDirect
) return SQL_ERROR
;
544 return pSQLExecDirect(params
->StatementHandle
, params
->StatementText
, params
->TextLength
);
547 static NTSTATUS
wrap_SQLExecDirectW( void *args
)
549 struct SQLExecDirectW_params
*params
= args
;
551 if (!pSQLExecDirectW
) return SQL_ERROR
;
552 return pSQLExecDirectW(params
->StatementHandle
, params
->StatementText
, params
->TextLength
);
555 static NTSTATUS
wrap_SQLExecute( void *args
)
557 struct SQLExecute_params
*params
= args
;
559 if (!pSQLExecute
) return SQL_ERROR
;
560 return pSQLExecute(params
->StatementHandle
);
563 static NTSTATUS
wrap_SQLExtendedFetch( void *args
)
565 struct SQLExtendedFetch_params
*params
= args
;
567 if (!pSQLExtendedFetch
) return SQL_ERROR
;
568 return pSQLExtendedFetch(params
->hstmt
, params
->fFetchType
, params
->irow
,
569 params
->pcrow
, params
->rgfRowStatus
);
572 static NTSTATUS
wrap_SQLFetch( void *args
)
574 struct SQLFetch_params
*params
= args
;
576 if (!pSQLFetch
) return SQL_ERROR
;
577 return pSQLFetch(params
->StatementHandle
);
580 static NTSTATUS
wrap_SQLFetchScroll( void *args
)
582 struct SQLFetchScroll_params
*params
= args
;
584 if (!pSQLFetchScroll
) return SQL_ERROR
;
585 return pSQLFetchScroll(params
->StatementHandle
, params
->FetchOrientation
, params
->FetchOffset
);
588 static NTSTATUS
wrap_SQLForeignKeys( void *args
)
590 struct SQLForeignKeys_params
*params
= args
;
592 if (!pSQLForeignKeys
) return SQL_ERROR
;
593 return pSQLForeignKeys(params
->hstmt
, params
->szPkCatalogName
, params
->cbPkCatalogName
,
594 params
->szPkSchemaName
, params
->cbPkSchemaName
, params
->szPkTableName
,
595 params
->cbPkTableName
, params
->szFkCatalogName
, params
->cbFkCatalogName
,
596 params
->szFkSchemaName
, params
->cbFkSchemaName
, params
->szFkTableName
,
597 params
->cbFkTableName
);
600 static NTSTATUS
wrap_SQLForeignKeysW( void *args
)
602 struct SQLForeignKeysW_params
*params
= args
;
604 if (!pSQLForeignKeysW
) return SQL_ERROR
;
605 return pSQLForeignKeysW(params
->hstmt
, params
->szPkCatalogName
, params
->cbPkCatalogName
,
606 params
->szPkSchemaName
, params
->cbPkSchemaName
, params
->szPkTableName
,
607 params
->cbPkTableName
, params
->szFkCatalogName
, params
->cbFkCatalogName
,
608 params
->szFkSchemaName
, params
->cbFkSchemaName
, params
->szFkTableName
,
609 params
->cbFkTableName
);
612 static NTSTATUS
wrap_SQLFreeConnect( void *args
)
614 struct SQLFreeConnect_params
*params
= args
;
616 if (!pSQLFreeConnect
) return SQL_ERROR
;
617 return pSQLFreeConnect(params
->ConnectionHandle
);
620 static NTSTATUS
wrap_SQLFreeEnv( void *args
)
622 struct SQLFreeEnv_params
*params
= args
;
624 if (!pSQLFreeEnv
) return SQL_ERROR
;
625 return pSQLFreeEnv(params
->EnvironmentHandle
);
628 static NTSTATUS
wrap_SQLFreeHandle( void *args
)
630 struct SQLFreeHandle_params
*params
= args
;
632 if (!pSQLFreeHandle
) return SQL_ERROR
;
633 return pSQLFreeHandle(params
->HandleType
, params
->Handle
);
636 static NTSTATUS
wrap_SQLFreeStmt( void *args
)
638 struct SQLFreeStmt_params
*params
= args
;
640 if (!pSQLFreeStmt
) return SQL_ERROR
;
641 return pSQLFreeStmt(params
->StatementHandle
, params
->Option
);
644 static NTSTATUS
wrap_SQLGetConnectAttr( void *args
)
646 struct SQLGetConnectAttr_params
*params
= args
;
648 if (!pSQLGetConnectAttr
) return SQL_ERROR
;
649 return pSQLGetConnectAttr(params
->ConnectionHandle
, params
->Attribute
, params
->Value
,
650 params
->BufferLength
, params
->StringLength
);
653 static NTSTATUS
wrap_SQLGetConnectAttrW( void *args
)
655 struct SQLGetConnectAttrW_params
*params
= args
;
657 if (!pSQLGetConnectAttrW
) return SQL_ERROR
;
658 return pSQLGetConnectAttrW(params
->ConnectionHandle
, params
->Attribute
, params
->Value
,
659 params
->BufferLength
, params
->StringLength
);
662 static NTSTATUS
wrap_SQLGetConnectOption( void *args
)
664 struct SQLGetConnectOption_params
*params
= args
;
666 if (!pSQLGetConnectOption
) return SQL_ERROR
;
667 return pSQLGetConnectOption(params
->ConnectionHandle
, params
->Option
, params
->Value
);
670 static NTSTATUS
wrap_SQLGetConnectOptionW( void *args
)
672 struct SQLGetConnectOptionW_params
*params
= args
;
674 if (!pSQLGetConnectOptionW
) return SQL_ERROR
;
675 return pSQLGetConnectOptionW(params
->ConnectionHandle
, params
->Option
, params
->Value
);
678 static NTSTATUS
wrap_SQLGetCursorName( void *args
)
680 struct SQLGetCursorName_params
*params
= args
;
682 if (!pSQLGetCursorName
) return SQL_ERROR
;
683 return pSQLGetCursorName(params
->StatementHandle
, params
->CursorName
, params
->BufferLength
,
687 static NTSTATUS
wrap_SQLGetCursorNameW( void *args
)
689 struct SQLGetCursorNameW_params
*params
= args
;
691 if (!pSQLGetCursorNameW
) return SQL_ERROR
;
692 return pSQLGetCursorNameW(params
->StatementHandle
, params
->CursorName
, params
->BufferLength
,
696 static NTSTATUS
wrap_SQLGetData( void *args
)
698 struct SQLGetData_params
*params
= args
;
700 if (!pSQLGetData
) return SQL_ERROR
;
701 return pSQLGetData(params
->StatementHandle
, params
->ColumnNumber
, params
->TargetType
,
702 params
->TargetValue
, params
->BufferLength
, params
->StrLen_or_Ind
);
705 static NTSTATUS
wrap_SQLGetDescField( void *args
)
707 struct SQLGetDescField_params
*params
= args
;
709 if (!pSQLGetDescField
) return SQL_ERROR
;
710 return pSQLGetDescField(params
->DescriptorHandle
, params
->RecNumber
, params
->FieldIdentifier
,
711 params
->Value
, params
->BufferLength
, params
->StringLength
);
714 static NTSTATUS
wrap_SQLGetDescFieldW( void *args
)
716 struct SQLGetDescFieldW_params
*params
= args
;
718 if (!pSQLGetDescFieldW
) return SQL_ERROR
;
719 return pSQLGetDescFieldW(params
->DescriptorHandle
, params
->RecNumber
, params
->FieldIdentifier
,
720 params
->Value
, params
->BufferLength
, params
->StringLength
);
723 static NTSTATUS
wrap_SQLGetDescRec( void *args
)
725 struct SQLGetDescRec_params
*params
= args
;
727 if (!pSQLGetDescRec
) return SQL_ERROR
;
728 return pSQLGetDescRec(params
->DescriptorHandle
, params
->RecNumber
, params
->Name
, params
->BufferLength
,
729 params
->StringLength
, params
->Type
, params
->SubType
, params
->Length
,
730 params
->Precision
, params
->Scale
, params
->Nullable
);
733 static NTSTATUS
wrap_SQLGetDescRecW( void *args
)
735 struct SQLGetDescRecW_params
*params
= args
;
737 if (!pSQLGetDescRecW
) return SQL_ERROR
;
738 return pSQLGetDescRecW(params
->DescriptorHandle
, params
->RecNumber
, params
->Name
, params
->BufferLength
,
739 params
->StringLength
, params
->Type
, params
->SubType
, params
->Length
,
740 params
->Precision
, params
->Scale
, params
->Nullable
);
743 static NTSTATUS
wrap_SQLGetDiagField( void *args
)
745 struct SQLGetDiagField_params
*params
= args
;
747 if (!pSQLGetDiagField
) return SQL_ERROR
;
748 return pSQLGetDiagField(params
->HandleType
, params
->Handle
, params
->RecNumber
, params
->DiagIdentifier
,
749 params
->DiagInfo
, params
->BufferLength
, params
->StringLength
);
752 static NTSTATUS
wrap_SQLGetDiagFieldW( void *args
)
754 struct SQLGetDiagFieldW_params
*params
= args
;
756 if (!pSQLGetDiagFieldW
) return SQL_ERROR
;
757 return pSQLGetDiagFieldW(params
->HandleType
, params
->Handle
, params
->RecNumber
, params
->DiagIdentifier
,
758 params
->DiagInfo
, params
->BufferLength
, params
->StringLength
);
761 static NTSTATUS
wrap_SQLGetDiagRec( void *args
)
763 struct SQLGetDiagRec_params
*params
= args
;
765 if (!pSQLGetDiagRec
) return SQL_ERROR
;
766 return pSQLGetDiagRec(params
->HandleType
, params
->Handle
, params
->RecNumber
, params
->Sqlstate
,
767 params
->NativeError
, params
->MessageText
, params
->BufferLength
,
771 static NTSTATUS
wrap_SQLGetDiagRecA( void *args
)
773 struct SQLGetDiagRecA_params
*params
= args
;
775 if (!pSQLGetDiagRecA
) return SQL_ERROR
;
776 return pSQLGetDiagRecA(params
->HandleType
, params
->Handle
, params
->RecNumber
, params
->Sqlstate
,
777 params
->NativeError
, params
->MessageText
, params
->BufferLength
,
781 static NTSTATUS
wrap_SQLGetDiagRecW( void *args
)
783 struct SQLGetDiagRecW_params
*params
= args
;
785 if (!pSQLGetDiagRecW
) return SQL_ERROR
;
786 return pSQLGetDiagRecW(params
->HandleType
, params
->Handle
, params
->RecNumber
, params
->Sqlstate
,
787 params
->NativeError
, params
->MessageText
, params
->BufferLength
,
791 static NTSTATUS
wrap_SQLGetEnvAttr( void *args
)
793 struct SQLGetEnvAttr_params
*params
= args
;
795 if (!pSQLGetEnvAttr
) return SQL_ERROR
;
796 return pSQLGetEnvAttr(params
->EnvironmentHandle
, params
->Attribute
, params
->Value
,
797 params
->BufferLength
, params
->StringLength
);
800 static NTSTATUS
wrap_SQLGetFunctions( void *args
)
802 struct SQLGetFunctions_params
*params
= args
;
804 if (!pSQLGetFunctions
) return SQL_ERROR
;
805 return pSQLGetFunctions(params
->ConnectionHandle
, params
->FunctionId
, params
->Supported
);
808 static NTSTATUS
wrap_SQLGetInfo( void *args
)
810 struct SQLGetInfo_params
*params
= args
;
812 if (!pSQLGetInfo
) return SQL_ERROR
;
813 return pSQLGetInfo(params
->ConnectionHandle
, params
->InfoType
, params
->InfoValue
,
814 params
->BufferLength
, params
->StringLength
);
817 static NTSTATUS
wrap_SQLGetInfoW( void *args
)
819 struct SQLGetInfoW_params
*params
= args
;
821 if (!pSQLGetInfoW
) return SQL_ERROR
;
822 return pSQLGetInfoW(params
->ConnectionHandle
, params
->InfoType
, params
->InfoValue
,
823 params
->BufferLength
, params
->StringLength
);
826 static NTSTATUS
wrap_SQLGetStmtAttr( void *args
)
828 struct SQLGetStmtAttr_params
*params
= args
;
830 if (!pSQLGetStmtAttr
) return SQL_ERROR
;
831 return pSQLGetStmtAttr(params
->StatementHandle
, params
->Attribute
, params
->Value
,
832 params
->BufferLength
, params
->StringLength
);
835 static NTSTATUS
wrap_SQLGetStmtAttrW( void *args
)
837 struct SQLGetStmtAttrW_params
*params
= args
;
839 if (!pSQLGetStmtAttrW
) return SQL_ERROR
;
840 return pSQLGetStmtAttrW(params
->StatementHandle
, params
->Attribute
, params
->Value
,
841 params
->BufferLength
, params
->StringLength
);
844 static NTSTATUS
wrap_SQLGetStmtOption( void *args
)
846 struct SQLGetStmtOption_params
*params
= args
;
848 if (!pSQLGetStmtOption
) return SQL_ERROR
;
849 return pSQLGetStmtOption(params
->StatementHandle
, params
->Option
, params
->Value
);
852 static NTSTATUS
wrap_SQLGetTypeInfo( void *args
)
854 struct SQLGetTypeInfo_params
*params
= args
;
856 if (!pSQLGetTypeInfo
) return SQL_ERROR
;
857 return pSQLGetTypeInfo(params
->StatementHandle
, params
->DataType
);
860 static NTSTATUS
wrap_SQLGetTypeInfoW( void *args
)
862 struct SQLGetTypeInfoW_params
*params
= args
;
864 if (!pSQLGetTypeInfoW
) return SQL_ERROR
;
865 return pSQLGetTypeInfoW(params
->StatementHandle
, params
->DataType
);
868 static NTSTATUS
wrap_SQLMoreResults( void *args
)
870 struct SQLMoreResults_params
*params
= args
;
872 if (!pSQLMoreResults
) return SQL_ERROR
;
873 return pSQLMoreResults(params
->StatementHandle
);
876 static NTSTATUS
wrap_SQLNativeSql( void *args
)
878 struct SQLNativeSql_params
*params
= args
;
880 if (!pSQLNativeSql
) return SQL_ERROR
;
881 return pSQLNativeSql(params
->hdbc
, params
->szSqlStrIn
, params
->cbSqlStrIn
, params
->szSqlStr
,
882 params
->cbSqlStrMax
, params
->pcbSqlStr
);
885 static NTSTATUS
wrap_SQLNativeSqlW( void *args
)
887 struct SQLNativeSqlW_params
*params
= args
;
889 if (!pSQLNativeSqlW
) return SQL_ERROR
;
890 return pSQLNativeSqlW(params
->hdbc
, params
->szSqlStrIn
, params
->cbSqlStrIn
, params
->szSqlStr
,
891 params
->cbSqlStrMax
, params
->pcbSqlStr
);
894 static NTSTATUS
wrap_SQLNumParams( void *args
)
896 struct SQLNumParams_params
*params
= args
;
898 if (!pSQLNumParams
) return SQL_ERROR
;
899 return pSQLNumParams(params
->hstmt
, params
->pcpar
);
902 static NTSTATUS
wrap_SQLNumResultCols( void *args
)
904 struct SQLNumResultCols_params
*params
= args
;
906 if (!pSQLNumResultCols
) return SQL_ERROR
;
907 return pSQLNumResultCols(params
->StatementHandle
, params
->ColumnCount
);
910 static NTSTATUS
wrap_SQLParamData( void *args
)
912 struct SQLParamData_params
*params
= args
;
914 if (!pSQLParamData
) return SQL_ERROR
;
915 return pSQLParamData(params
->StatementHandle
, params
->Value
);
918 static NTSTATUS
wrap_SQLParamOptions( void *args
)
920 struct SQLParamOptions_params
*params
= args
;
922 if (!pSQLParamOptions
) return SQL_ERROR
;
923 return pSQLParamOptions(params
->hstmt
, params
->crow
, params
->pirow
);
926 static NTSTATUS
wrap_SQLPrepare( void *args
)
928 struct SQLPrepare_params
*params
= args
;
930 if (!pSQLPrepare
) return SQL_ERROR
;
931 return pSQLPrepare(params
->StatementHandle
, params
->StatementText
, params
->TextLength
);
934 static NTSTATUS
wrap_SQLPrepareW( void *args
)
936 struct SQLPrepareW_params
*params
= args
;
938 if (!pSQLPrepareW
) return SQL_ERROR
;
939 return pSQLPrepareW(params
->StatementHandle
, params
->StatementText
, params
->TextLength
);
942 static NTSTATUS
wrap_SQLPrimaryKeys( void *args
)
944 struct SQLPrimaryKeys_params
*params
= args
;
946 if (!pSQLPrimaryKeys
) return SQL_ERROR
;
947 return pSQLPrimaryKeys(params
->hstmt
, params
->szCatalogName
, params
->cbCatalogName
,
948 params
->szSchemaName
, params
->cbSchemaName
,
949 params
->szTableName
, params
->cbTableName
);
952 static NTSTATUS
wrap_SQLPrimaryKeysW( void *args
)
954 struct SQLPrimaryKeysW_params
*params
= args
;
956 if (!pSQLPrimaryKeysW
) return SQL_ERROR
;
957 return pSQLPrimaryKeysW(params
->hstmt
, params
->szCatalogName
, params
->cbCatalogName
,
958 params
->szSchemaName
, params
->cbSchemaName
,
959 params
->szTableName
, params
->cbTableName
);
962 static NTSTATUS
wrap_SQLProcedureColumns( void *args
)
964 struct SQLProcedureColumns_params
*params
= args
;
966 if (!pSQLProcedureColumns
) return SQL_ERROR
;
967 return pSQLProcedureColumns(params
->hstmt
, params
->szCatalogName
, params
->cbCatalogName
,
968 params
->szSchemaName
, params
->cbSchemaName
, params
->szProcName
,
969 params
->cbProcName
, params
->szColumnName
, params
->cbColumnName
);
972 static NTSTATUS
wrap_SQLProcedureColumnsW( void *args
)
974 struct SQLProcedureColumnsW_params
*params
= args
;
976 if (!pSQLProcedureColumnsW
) return SQL_ERROR
;
977 return pSQLProcedureColumnsW(params
->hstmt
, params
->szCatalogName
, params
->cbCatalogName
,
978 params
->szSchemaName
, params
->cbSchemaName
, params
->szProcName
,
979 params
->cbProcName
, params
->szColumnName
, params
->cbColumnName
);
982 static NTSTATUS
wrap_SQLProcedures( void *args
)
984 struct SQLProcedures_params
*params
= args
;
986 if (!pSQLProcedures
) return SQL_ERROR
;
987 return pSQLProcedures(params
->hstmt
, params
->szCatalogName
, params
->cbCatalogName
,
988 params
->szSchemaName
, params
->cbSchemaName
, params
->szProcName
,
992 static NTSTATUS
wrap_SQLProceduresW( void *args
)
994 struct SQLProceduresW_params
*params
= args
;
996 if (!pSQLProceduresW
) return SQL_ERROR
;
997 return pSQLProceduresW(params
->hstmt
, params
->szCatalogName
, params
->cbCatalogName
,
998 params
->szSchemaName
, params
->cbSchemaName
, params
->szProcName
,
1002 static NTSTATUS
wrap_SQLPutData( void *args
)
1004 struct SQLPutData_params
*params
= args
;
1006 if (!pSQLPutData
) return SQL_ERROR
;
1007 return pSQLPutData(params
->StatementHandle
, params
->Data
, params
->StrLen_or_Ind
);
1010 static NTSTATUS
wrap_SQLRowCount( void *args
)
1012 struct SQLRowCount_params
*params
= args
;
1014 if (!pSQLRowCount
) return SQL_ERROR
;
1015 return pSQLRowCount(params
->StatementHandle
, params
->RowCount
);
1018 static NTSTATUS
wrap_SQLSetConnectAttr( void *args
)
1020 struct SQLSetConnectAttr_params
*params
= args
;
1022 if (!pSQLSetConnectAttr
) return SQL_ERROR
;
1023 return pSQLSetConnectAttr(params
->ConnectionHandle
, params
->Attribute
, params
->Value
,
1024 params
->StringLength
);
1027 static NTSTATUS
wrap_SQLSetConnectAttrW( void *args
)
1029 struct SQLSetConnectAttrW_params
*params
= args
;
1031 if (!pSQLSetConnectAttrW
) return SQL_ERROR
;
1032 return pSQLSetConnectAttrW(params
->ConnectionHandle
, params
->Attribute
, params
->Value
,
1033 params
->StringLength
);
1036 static NTSTATUS
wrap_SQLSetConnectOption( void *args
)
1038 struct SQLSetConnectOption_params
*params
= args
;
1040 if (!pSQLSetConnectOption
) return SQL_ERROR
;
1041 return pSQLSetConnectOption(params
->ConnectionHandle
, params
->Option
, params
->Value
);
1044 static NTSTATUS
wrap_SQLSetConnectOptionW( void *args
)
1046 struct SQLSetConnectOptionW_params
*params
= args
;
1048 if (!pSQLSetConnectOptionW
) return SQL_ERROR
;
1049 return pSQLSetConnectOptionW(params
->ConnectionHandle
, params
->Option
, params
->Value
);
1052 static NTSTATUS
wrap_SQLSetCursorName( void *args
)
1054 struct SQLSetCursorName_params
*params
= args
;
1056 if (!pSQLSetCursorName
) return SQL_ERROR
;
1057 return pSQLSetCursorName(params
->StatementHandle
, params
->CursorName
, params
->NameLength
);
1060 static NTSTATUS
wrap_SQLSetCursorNameW( void *args
)
1062 struct SQLSetCursorNameW_params
*params
= args
;
1064 if (!pSQLSetCursorNameW
) return SQL_ERROR
;
1065 return pSQLSetCursorNameW(params
->StatementHandle
, params
->CursorName
, params
->NameLength
);
1068 static NTSTATUS
wrap_SQLSetDescField( void *args
)
1070 struct SQLSetDescField_params
*params
= args
;
1072 if (!pSQLSetDescField
) return SQL_ERROR
;
1073 return pSQLSetDescField(params
->DescriptorHandle
, params
->RecNumber
, params
->FieldIdentifier
,
1074 params
->Value
, params
->BufferLength
);
1077 static NTSTATUS
wrap_SQLSetDescFieldW( void *args
)
1079 struct SQLSetDescFieldW_params
*params
= args
;
1081 if (!pSQLSetDescFieldW
) return SQL_ERROR
;
1082 return pSQLSetDescFieldW(params
->DescriptorHandle
, params
->RecNumber
, params
->FieldIdentifier
,
1083 params
->Value
, params
->BufferLength
);
1086 static NTSTATUS
wrap_SQLSetDescRec( void *args
)
1088 struct SQLSetDescRec_params
*params
= args
;
1090 if (!pSQLSetDescRec
) return SQL_ERROR
;
1091 return pSQLSetDescRec(params
->DescriptorHandle
, params
->RecNumber
, params
->Type
, params
->SubType
,
1092 params
->Length
, params
->Precision
, params
->Scale
, params
->Data
,
1093 params
->StringLength
, params
->Indicator
);
1096 static NTSTATUS
wrap_SQLSetEnvAttr( void *args
)
1098 struct SQLSetEnvAttr_params
*params
= args
;
1100 if (!pSQLSetEnvAttr
) return SQL_ERROR
;
1101 return pSQLSetEnvAttr(params
->EnvironmentHandle
, params
->Attribute
, params
->Value
, params
->StringLength
);
1104 static NTSTATUS
wrap_SQLSetParam( void *args
)
1106 struct SQLSetParam_params
*params
= args
;
1108 if (!pSQLSetParam
) return SQL_ERROR
;
1109 return pSQLSetParam(params
->StatementHandle
, params
->ParameterNumber
, params
->ValueType
,
1110 params
->ParameterType
, params
->LengthPrecision
, params
->ParameterScale
,
1111 params
->ParameterValue
, params
->StrLen_or_Ind
);
1114 static NTSTATUS
wrap_SQLSetPos( void *args
)
1116 struct SQLSetPos_params
*params
= args
;
1118 if (!pSQLSetPos
) return SQL_ERROR
;
1119 return pSQLSetPos(params
->hstmt
, params
->irow
, params
->fOption
, params
->fLock
);
1122 static NTSTATUS
wrap_SQLSetScrollOptions( void *args
)
1124 struct SQLSetScrollOptions_params
*params
= args
;
1126 if (!pSQLSetScrollOptions
) return SQL_ERROR
;
1127 return pSQLSetScrollOptions(params
->statement_handle
, params
->f_concurrency
,
1128 params
->crow_keyset
, params
->crow_rowset
);
1131 static NTSTATUS
wrap_SQLSetStmtAttr( void *args
)
1133 struct SQLSetStmtAttr_params
*params
= args
;
1135 if (!pSQLSetStmtAttr
) return SQL_ERROR
;
1136 return pSQLSetStmtAttr(params
->StatementHandle
, params
->Attribute
, params
->Value
, params
->StringLength
);
1139 static NTSTATUS
wrap_SQLSetStmtAttrW( void *args
)
1141 struct SQLSetStmtAttrW_params
*params
= args
;
1143 if (!pSQLSetStmtAttrW
) return SQL_ERROR
;
1144 return pSQLSetStmtAttrW(params
->StatementHandle
, params
->Attribute
, params
->Value
, params
->StringLength
);
1147 static NTSTATUS
wrap_SQLSetStmtOption( void *args
)
1149 struct SQLSetStmtOption_params
*params
= args
;
1151 if (!pSQLSetStmtOption
) return SQL_ERROR
;
1152 return pSQLSetStmtOption(params
->StatementHandle
, params
->Option
, params
->Value
);
1155 static NTSTATUS
wrap_SQLSpecialColumns( void *args
)
1157 struct SQLSpecialColumns_params
*params
= args
;
1159 if (!pSQLSpecialColumns
) return SQL_ERROR
;
1160 return pSQLSpecialColumns(params
->StatementHandle
, params
->IdentifierType
, params
->CatalogName
,
1161 params
->NameLength1
, params
->SchemaName
, params
->NameLength2
,
1162 params
->TableName
, params
->NameLength3
, params
->Scope
, params
->Nullable
);
1165 static NTSTATUS
wrap_SQLSpecialColumnsW( void *args
)
1167 struct SQLSpecialColumnsW_params
*params
= args
;
1169 if (!pSQLSpecialColumnsW
) return SQL_ERROR
;
1170 return pSQLSpecialColumnsW(params
->StatementHandle
, params
->IdentifierType
, params
->CatalogName
,
1171 params
->NameLength1
, params
->SchemaName
, params
->NameLength2
,
1172 params
->TableName
, params
->NameLength3
, params
->Scope
, params
->Nullable
);
1175 static NTSTATUS
wrap_SQLStatistics( void *args
)
1177 struct SQLStatistics_params
*params
= args
;
1179 if (!pSQLStatistics
) return SQL_ERROR
;
1180 return pSQLStatistics(params
->StatementHandle
, params
->CatalogName
, params
->NameLength1
,
1181 params
->SchemaName
, params
->NameLength2
, params
->TableName
,
1182 params
->NameLength3
, params
->Unique
, params
->Reserved
);
1185 static NTSTATUS
wrap_SQLStatisticsW( void *args
)
1187 struct SQLStatisticsW_params
*params
= args
;
1189 if (!pSQLStatisticsW
) return SQL_ERROR
;
1190 return pSQLStatisticsW(params
->StatementHandle
, params
->CatalogName
, params
->NameLength1
,
1191 params
->SchemaName
, params
->NameLength2
, params
->TableName
,
1192 params
->NameLength3
, params
->Unique
, params
->Reserved
);
1195 static NTSTATUS
wrap_SQLTablePrivileges( void *args
)
1197 struct SQLTablePrivileges_params
*params
= args
;
1199 if (!pSQLTablePrivileges
) return SQL_ERROR
;
1200 return pSQLTablePrivileges(params
->hstmt
, params
->szCatalogName
, params
->cbCatalogName
,
1201 params
->szSchemaName
, params
->cbSchemaName
, params
->szTableName
,
1202 params
->cbTableName
);
1205 static NTSTATUS
wrap_SQLTablePrivilegesW( void *args
)
1207 struct SQLTablePrivilegesW_params
*params
= args
;
1209 if (!pSQLTablePrivilegesW
) return SQL_ERROR
;
1210 return pSQLTablePrivilegesW(params
->hstmt
, params
->szCatalogName
, params
->cbCatalogName
,
1211 params
->szSchemaName
, params
->cbSchemaName
, params
->szTableName
,
1212 params
->cbTableName
);
1215 static NTSTATUS
wrap_SQLTables( void *args
)
1217 struct SQLTables_params
*params
= args
;
1219 if (!pSQLTables
) return SQL_ERROR
;
1220 return pSQLTables(params
->StatementHandle
, params
->CatalogName
, params
->NameLength1
,
1221 params
->SchemaName
, params
->NameLength2
, params
->TableName
,
1222 params
->NameLength3
, params
->TableType
, params
->NameLength4
);
1225 static NTSTATUS
wrap_SQLTablesW( void *args
)
1227 struct SQLTablesW_params
*params
= args
;
1229 if (!pSQLTablesW
) return SQL_ERROR
;
1230 return pSQLTablesW(params
->StatementHandle
, params
->CatalogName
, params
->NameLength1
,
1231 params
->SchemaName
, params
->NameLength2
, params
->TableName
,
1232 params
->NameLength3
, params
->TableType
, params
->NameLength4
);
1235 static NTSTATUS
wrap_SQLTransact( void *args
)
1237 struct SQLTransact_params
*params
= args
;
1239 if (!pSQLTransact
) return SQL_ERROR
;
1240 return pSQLTransact(params
->EnvironmentHandle
, params
->ConnectionHandle
, params
->CompletionType
);
1243 const unixlib_entry_t __wine_unix_call_funcs
[NB_ODBC_FUNCS
] =
1245 odbc_process_attach
,
1246 odbc_process_detach
,
1247 wrap_SQLAllocConnect
,
1249 wrap_SQLAllocHandle
,
1250 wrap_SQLAllocHandleStd
,
1254 wrap_SQLBindParameter
,
1255 wrap_SQLBrowseConnect
,
1256 wrap_SQLBrowseConnectW
,
1257 wrap_SQLBulkOperations
,
1259 wrap_SQLCloseCursor
,
1260 wrap_SQLColAttribute
,
1261 wrap_SQLColAttributeW
,
1262 wrap_SQLColAttributes
,
1263 wrap_SQLColAttributesW
,
1264 wrap_SQLColumnPrivileges
,
1265 wrap_SQLColumnPrivilegesW
,
1271 wrap_SQLDataSources
,
1272 wrap_SQLDataSourcesA
,
1273 wrap_SQLDataSourcesW
,
1274 wrap_SQLDescribeCol
,
1275 wrap_SQLDescribeColW
,
1276 wrap_SQLDescribeParam
,
1278 wrap_SQLDriverConnect
,
1279 wrap_SQLDriverConnectW
,
1286 wrap_SQLExecDirectW
,
1288 wrap_SQLExtendedFetch
,
1290 wrap_SQLFetchScroll
,
1291 wrap_SQLForeignKeys
,
1292 wrap_SQLForeignKeysW
,
1293 wrap_SQLFreeConnect
,
1297 wrap_SQLGetConnectAttr
,
1298 wrap_SQLGetConnectAttrW
,
1299 wrap_SQLGetConnectOption
,
1300 wrap_SQLGetConnectOptionW
,
1301 wrap_SQLGetCursorName
,
1302 wrap_SQLGetCursorNameW
,
1304 wrap_SQLGetDescField
,
1305 wrap_SQLGetDescFieldW
,
1307 wrap_SQLGetDescRecW
,
1308 wrap_SQLGetDiagField
,
1309 wrap_SQLGetDiagFieldW
,
1311 wrap_SQLGetDiagRecA
,
1312 wrap_SQLGetDiagRecW
,
1314 wrap_SQLGetFunctions
,
1317 wrap_SQLGetStmtAttr
,
1318 wrap_SQLGetStmtAttrW
,
1319 wrap_SQLGetStmtOption
,
1320 wrap_SQLGetTypeInfo
,
1321 wrap_SQLGetTypeInfoW
,
1322 wrap_SQLMoreResults
,
1326 wrap_SQLNumResultCols
,
1328 wrap_SQLParamOptions
,
1331 wrap_SQLPrimaryKeys
,
1332 wrap_SQLPrimaryKeysW
,
1333 wrap_SQLProcedureColumns
,
1334 wrap_SQLProcedureColumnsW
,
1336 wrap_SQLProceduresW
,
1339 wrap_SQLSetConnectAttr
,
1340 wrap_SQLSetConnectAttrW
,
1341 wrap_SQLSetConnectOption
,
1342 wrap_SQLSetConnectOptionW
,
1343 wrap_SQLSetCursorName
,
1344 wrap_SQLSetCursorNameW
,
1345 wrap_SQLSetDescField
,
1346 wrap_SQLSetDescFieldW
,
1351 wrap_SQLSetScrollOptions
,
1352 wrap_SQLSetStmtAttr
,
1353 wrap_SQLSetStmtAttrW
,
1354 wrap_SQLSetStmtOption
,
1355 wrap_SQLSpecialColumns
,
1356 wrap_SQLSpecialColumnsW
,
1358 wrap_SQLStatisticsW
,
1359 wrap_SQLTablePrivileges
,
1360 wrap_SQLTablePrivilegesW
,
1366 static NTSTATUS
load_odbc(void)
1368 const char *s
= getenv("LIB_ODBC_DRIVER_MANAGER");
1370 #ifdef SONAME_LIBODBC
1371 if (!s
|| !s
[0]) s
= SONAME_LIBODBC
;
1373 if (!s
|| !s
[0] || !(libodbc
= dlopen( s
, RTLD_LAZY
| RTLD_GLOBAL
)))
1375 ERR_(winediag
)("failed to open library %s: %s\n", debugstr_a(s
), dlerror());
1376 return STATUS_DLL_NOT_FOUND
;
1379 #define LOAD_FUNC(name) \
1380 p##name = dlsym( libodbc, #name );
1382 LOAD_FUNC(SQLAllocConnect
);
1383 LOAD_FUNC(SQLAllocEnv
);
1384 LOAD_FUNC(SQLAllocHandle
);
1385 LOAD_FUNC(SQLAllocHandleStd
);
1386 LOAD_FUNC(SQLAllocStmt
);
1387 LOAD_FUNC(SQLBindCol
);
1388 LOAD_FUNC(SQLBindParam
);
1389 LOAD_FUNC(SQLBindParameter
);
1390 LOAD_FUNC(SQLBrowseConnect
);
1391 LOAD_FUNC(SQLBrowseConnectW
);
1392 LOAD_FUNC(SQLBulkOperations
);
1393 LOAD_FUNC(SQLCancel
);
1394 LOAD_FUNC(SQLCloseCursor
);
1395 LOAD_FUNC(SQLColAttribute
);
1396 LOAD_FUNC(SQLColAttributeW
);
1397 LOAD_FUNC(SQLColAttributes
);
1398 LOAD_FUNC(SQLColAttributesW
);
1399 LOAD_FUNC(SQLColumnPrivileges
);
1400 LOAD_FUNC(SQLColumnPrivilegesW
);
1401 LOAD_FUNC(SQLColumns
);
1402 LOAD_FUNC(SQLColumnsW
);
1403 LOAD_FUNC(SQLConnect
);
1404 LOAD_FUNC(SQLConnectW
);
1405 LOAD_FUNC(SQLCopyDesc
);
1406 LOAD_FUNC(SQLDataSources
);
1407 LOAD_FUNC(SQLDataSourcesA
);
1408 LOAD_FUNC(SQLDataSourcesW
);
1409 LOAD_FUNC(SQLDescribeCol
);
1410 LOAD_FUNC(SQLDescribeColW
);
1411 LOAD_FUNC(SQLDescribeParam
);
1412 LOAD_FUNC(SQLDisconnect
);
1413 LOAD_FUNC(SQLDriverConnect
);
1414 LOAD_FUNC(SQLDriverConnectW
);
1415 LOAD_FUNC(SQLDrivers
);
1416 LOAD_FUNC(SQLDriversW
);
1417 LOAD_FUNC(SQLEndTran
);
1418 LOAD_FUNC(SQLError
);
1419 LOAD_FUNC(SQLErrorW
);
1420 LOAD_FUNC(SQLExecDirect
);
1421 LOAD_FUNC(SQLExecDirectW
);
1422 LOAD_FUNC(SQLExecute
);
1423 LOAD_FUNC(SQLExtendedFetch
);
1424 LOAD_FUNC(SQLFetch
);
1425 LOAD_FUNC(SQLFetchScroll
);
1426 LOAD_FUNC(SQLForeignKeys
);
1427 LOAD_FUNC(SQLForeignKeysW
);
1428 LOAD_FUNC(SQLFreeConnect
);
1429 LOAD_FUNC(SQLFreeEnv
);
1430 LOAD_FUNC(SQLFreeHandle
);
1431 LOAD_FUNC(SQLFreeStmt
);
1432 LOAD_FUNC(SQLGetConnectAttr
);
1433 LOAD_FUNC(SQLGetConnectAttrW
);
1434 LOAD_FUNC(SQLGetConnectOption
);
1435 LOAD_FUNC(SQLGetConnectOptionW
);
1436 LOAD_FUNC(SQLGetCursorName
);
1437 LOAD_FUNC(SQLGetCursorNameW
);
1438 LOAD_FUNC(SQLGetData
);
1439 LOAD_FUNC(SQLGetDescField
);
1440 LOAD_FUNC(SQLGetDescFieldW
);
1441 LOAD_FUNC(SQLGetDescRec
);
1442 LOAD_FUNC(SQLGetDescRecW
);
1443 LOAD_FUNC(SQLGetDiagField
);
1444 LOAD_FUNC(SQLGetDiagFieldW
);
1445 LOAD_FUNC(SQLGetDiagRec
);
1446 LOAD_FUNC(SQLGetDiagRecA
);
1447 LOAD_FUNC(SQLGetDiagRecW
);
1448 LOAD_FUNC(SQLGetEnvAttr
);
1449 LOAD_FUNC(SQLGetFunctions
);
1450 LOAD_FUNC(SQLGetInfo
);
1451 LOAD_FUNC(SQLGetInfoW
);
1452 LOAD_FUNC(SQLGetStmtAttr
);
1453 LOAD_FUNC(SQLGetStmtAttrW
);
1454 LOAD_FUNC(SQLGetStmtOption
);
1455 LOAD_FUNC(SQLGetTypeInfo
);
1456 LOAD_FUNC(SQLGetTypeInfoW
);
1457 LOAD_FUNC(SQLMoreResults
);
1458 LOAD_FUNC(SQLNativeSql
);
1459 LOAD_FUNC(SQLNativeSqlW
);
1460 LOAD_FUNC(SQLNumParams
);
1461 LOAD_FUNC(SQLNumResultCols
);
1462 LOAD_FUNC(SQLParamData
);
1463 LOAD_FUNC(SQLParamOptions
);
1464 LOAD_FUNC(SQLPrepare
);
1465 LOAD_FUNC(SQLPrepareW
);
1466 LOAD_FUNC(SQLPrimaryKeys
);
1467 LOAD_FUNC(SQLPrimaryKeysW
);
1468 LOAD_FUNC(SQLProcedureColumns
);
1469 LOAD_FUNC(SQLProcedureColumnsW
);
1470 LOAD_FUNC(SQLProcedures
);
1471 LOAD_FUNC(SQLProceduresW
);
1472 LOAD_FUNC(SQLPutData
);
1473 LOAD_FUNC(SQLRowCount
);
1474 LOAD_FUNC(SQLSetConnectAttr
);
1475 LOAD_FUNC(SQLSetConnectAttrW
);
1476 LOAD_FUNC(SQLSetConnectOption
);
1477 LOAD_FUNC(SQLSetConnectOptionW
);
1478 LOAD_FUNC(SQLSetCursorName
);
1479 LOAD_FUNC(SQLSetCursorNameW
);
1480 LOAD_FUNC(SQLSetDescField
);
1481 LOAD_FUNC(SQLSetDescFieldW
);
1482 LOAD_FUNC(SQLSetDescRec
);
1483 LOAD_FUNC(SQLSetEnvAttr
);
1484 LOAD_FUNC(SQLSetParam
);
1485 LOAD_FUNC(SQLSetPos
);
1486 LOAD_FUNC(SQLSetScrollOptions
);
1487 LOAD_FUNC(SQLSetStmtAttr
);
1488 LOAD_FUNC(SQLSetStmtAttrW
);
1489 LOAD_FUNC(SQLSetStmtOption
);
1490 LOAD_FUNC(SQLSpecialColumns
);
1491 LOAD_FUNC(SQLSpecialColumnsW
);
1492 LOAD_FUNC(SQLStatistics
);
1493 LOAD_FUNC(SQLStatisticsW
);
1494 LOAD_FUNC(SQLTablePrivileges
);
1495 LOAD_FUNC(SQLTablePrivilegesW
);
1496 LOAD_FUNC(SQLTables
);
1497 LOAD_FUNC(SQLTablesW
);
1498 LOAD_FUNC(SQLTransact
);
1500 return STATUS_SUCCESS
;