| Specification: | DB2 CLI 2.1 | ODBC 1.0 | ISO CLI |
SQLGetFunctions() to query whether a specific function is supported. This allows applications to adapt to varying levels of support when connecting to different database servers.
A connection to a database server must exist before calling this function.
Syntax
SQLRETURN SQLGetFunctions (
SQLHDBC ConnectionHandle, /* hdbc */
SQLUSMALLINT FunctionId, /* fFunction */
SQLUSMALLINT *FAR SupportedPtr); /* pfExists */
Function Arguments
Table 109. SQLGetFunctions Arguments
| Data Type | Argument | Use | Description |
|---|---|---|---|
| SQLHDBC | ConnectionHandle | input | Database connection handle. |
| SQLUSMALLINT | FunctionId | input | The function being queried. Valid FunctionId values are shown in Figure 17 |
| SQLUSMALLINT * | SupportedPtr | output | Pointer to location where this function will return SQL_TRUE or SQL_FALSE depending on whether the function being queried is supported. |
Usage
Figure 17 shows the valid values for the FunctionId argument and whether the corresponding function is supported. (This list was generated using the sample application getfuncs.c.)
If FunctionId is set to SQL_API_ALL_FUNCTIONS, then SupportedPtr must point to an SQLSMALLINT array of 100 elements. The array is indexed by the FunctionId values used to identify many of the functions. Some elements of the array are unused and reserved. Since some FunctionId values are greater than 100, the array method can not be used to obtain a list of functions. The SQLGetFunction() call must be explicitly issued for all FunctionId values equal to or above 100. The complete set of FunctionId values is defined in sqlcli1.h.
Figure 17. Supported Functions list (output from getfuncs.c).
-------------------------------------------
Connected to Server: SAMPLE
Database Name: SAMPLE
Instance Name: db2inst1
DBMS Name: DB2/6000
DBMS Version: 05.00.0000
-------------------------------------------
SQLALLOCCONNECT is supported SQLALLOCENV is supported
SQLALLOCHANDLE is supported SQLALLOCSTMT is supported
SQLBINDCOL is supported SQLBINDFILETOCOL is supported
SQLBINDFILETOPARAM is supported SQLBINDPARAM is supported
SQLBINDPARAMETER is supported SQLBROWSECONNECT is supported
SQLCANCEL is supported SQLCLOSECURSOR is supported
SQLCOLATTRIBUTE is supported SQLCOLATTRIBUTES is supported
SQLCOLUMNPRIVILEGES is supported SQLCOLUMNS is supported
SQLCONNECT is supported SQLCOPYDESC is supported
SQLDATASOURCES is supported SQLDESCRIBECOL is supported
SQLDESCRIBEPARAM is supported SQLDISCONNECT is supported
SQLDRIVERCONNECT is supported SQLENDTRAN is supported
SQLERROR is supported SQLEXECDIRECT is supported
SQLEXECUTE is supported SQLEXTENDEDFETCH is supported
SQLFETCH is supported SQLFETCHSCROLL is supported
SQLFOREIGNKEYS is supported SQLFREECONNECT is supported
SQLFREEENV is supported SQLFREEHANDLE is supported
SQLFREESTMT is supported SQLGETCONNECTATTR is supported
SQLGETCONNECTOPTION is supported SQLGETCURSORNAME is supported
SQLGETDATA is supported SQLGETDESCFIELD is supported
SQLGETDESCREC is supported SQLGETDIAGFIELD is supported
SQLGETDIAGREC is supported SQLGETENVATTR is supported
SQLGETFUNCTIONS is supported SQLGETINFO is supported
SQLGETLENGTH is supported SQLGETPOSITION is supported
SQLGETSQLCA is supported SQLGETSTMTATTR is supported
SQLGETSTMTOPTION is supported SQLGETSUBSTRING is supported
SQLGETTYPEINFO is supported SQLMORERESULTS is supported
SQLNATIVESQL is supported SQLNUMPARAMS is supported
SQLNUMRESULTCOLS is supported SQLPARAMDATA is supported
SQLPARAMOPTIONS is supported SQLPREPARE is supported
SQLPRIMARYKEYS is supported SQLPROCEDURECOLUMNS is supported
SQLPROCEDURES is supported SQLPUTDATA is supported
SQLROWCOUNT is supported SQLSETCOLATTRIBUTES is supported
SQLSETCONNECTATTR is supported SQLSETCONNECTION is supported
SQLSETCONNECTOPTION is supported SQLSETCURSORNAME is supported
SQLSETDESCFIELD is supported SQLSETDESCREC is supported
SQLSETENVATTR is supported SQLSETPARAM is supported
SQLSETPOS is supported SQLSETSCROLLOPTIONS is supported
SQLSETSTMTATTR is supported SQLSETSTMTOPTION is supported
SQLSPECIALCOLUMNS is supported SQLSTATISTICS is supported
SQLTABLEPRIVILEGES is supported SQLTABLES is supported
SQLTRANSACT is supported
|
| Note: | The LOB support functions (SQLGetLength(), SQLGetPosition(), SQLGetSubString(), SQLBindFileToCol(), SQLBindFileToCol()) are not supported when connected to DB2 for common server prior to Version 2.1 or other IBM RDBMSs that do not support LOB data types. |
Return Codes
Diagnostics
Table 110. SQLGetFunctions SQLSTATEs
| SQLSTATE | Description | Explanation |
|---|---|---|
| 40003 08S01 | Communication link failure. | The communication link between the application and data source failed before the function completed. |
| 58004 | Unexpected system failure. | Unrecoverable system error. |
| HY001 | Memory allocation failure. | DB2 CLI is unable to allocate memory required to support execution or completion of the function. |
| HY010 | Function sequence error. | SQLGetFunctions() was called before a database connection was established. |
| HY013 | Unexpected memory handling error. | DB2 CLI was unable to access memory required to support execution or completion of the function. |
Authorization
None.
The following example generates the listing shown in Figure 17 for any data source.
(The complete sample ilinfo.c is also available here .)
/* From the CLI sample ILINFO.C */
/* ... */
/* check to see if SQLGetInfo() is supported */
sqlrc = SQLGetFunctions(hdbc, SQL_API_SQLGETINFO, &supported);
HANDLE_CHECK( SQL_HANDLE_DBC, hdbc, sqlrc, &henv, &hdbc ) ;
References