Overview of the Interface Provider class
- Last Updated: May 12, 2026
- 3 minute read
- OpenAccess SDK
- Version 8.1
- Documentation
The following table shows all of the methods that the OpenAccess SDK SQL Engine can call to process queries. In addition to these methods, the IP must implement any methods it has registered for handling user-defined scalar functions and stored procedures. A .NET IP is implemented by creating a class in C# or VB# that is derived from the oanet.sql.ip class.
Methods to be supported by an IP
| Function | Method Name | Description |
| CONNECT Required | ipConnect | Called when a client wants to establish a connection with a data source served by the IP. Authentication information such as the user name and password are passed in. The default value is DAM_SUCCESS. If no return value is specified, the OpenAccess SDK SQL Engine assumes that the return value is DAM_SUCCESS. The IP does not generate a DAM_FAILURE unless specified. |
| DCL Optional | ipDCL | Execute a DCL command (create user, drop user, create role, drop role, grant, revoke). |
| DDL Optional | ipDDL | Called by the OpenAccess SDK SQL Engine to process DDL commands like CREATE TABLE. This method is only required if the IP indicates support for DDL Commands like CREATE TABLE, DROP TABLE in the Support Array. |
| DISCONNECT Required | ipDisconnect | Closes the connection. The IP should close any files or other connections established on behalf of this connection. |
| DYNAMIC_RESULTS Optional | ipProcedureDynamic | Called to invoke a stored procedure that returns one or more result sets that can be defined at runtime. |
| END TRANSACTION Optional | ipEndTransaction | COMMIT or ROLLBACK the current transaction. |
| EXECUTE Required | ipExecute | Called with INSERT, SELECT, UPDATE or DELETE operation code to perform the requested operation. |
| GETDSINFO Optional | ipGetDSInfo | Called to obtain information about the data source such as the SQL capabilities, limits on object names, and other information that is needed. This method should be a member of the IP class that implements the IP interface. |
| GETINFO Required | ipGetInfo | Gets information about the driver. |
| GET LONG DATA Required | ipGetLongData | Gets information about the long data. This method should be a member of the IP class that implements the IP interface. |
| GETSUPPORT Required | ipGetSupport | Gets information about what type of operations are supported by the driver. This information is used to determine what processing is passed down to the IP. |
| GET TYPES INFO Optional | ipGetTypesInfo | Called to get information about the data types. This method should be a member of the IP class that implements the IP interface. |
| NATIVE Optional | ipNative | Called to execute a command that the OpenAccess SDK SQL Engine did not recognize as a valid SQL command. |
| PRIVILEGE Optional | ipPrivilege | Called to verify privileges on the specified user, object and operation combination. |
| PROCEDURE Optional | ipProcedure | Called to invoke a stored procedure (only required if the IP is designed to support stored procedures with pre-defined result sets). |
| SCHEMA Optional | ipSchema | Called to retrieve the schema information of your data source (only required if the IP will handle the schema management). |
| SCHEMAEX Optional | ipSchemaEx | Called to retrieve schema information for stored procedures that define a result set at runtime (only required if the IP will handle the schema and will expose stored procedure with run-time defined result sets). |
| SETINFO Required | ipSetInfo | Passes connection and statement level settings modified by the client to the IP. |
| START TRANSACTION Optional | ipStartTransaction | Called to initiate a new transaction. The IP can use this entry point to perform transaction management for each connection. |
The OpenAccess SDK code creates an instance of your object that implements this interface for each connection.
The following interfaces are used in an IP written for the .NET environment:
public interface ip
{
public string ipGetInfo(int iInfoType);
public int ipSetInfo(int iInfoType, string pInfoValue)
public int ipGetSupport(int iSupportType);
public int ipConnect (int64 tmHandle, int64 dam_hdbc,
string sDataSourceName, string sUserName,
string sPassword, string sCurrentCatalog,
string sIPProperties, string sIPCustomProperties );
public int ipDisconnect(int64 dam_hdbc);
public int ipStartTransaction(int64 dam_hdbc);
public int ipEndTransaction(int64 dam_hdbc,int iType);
public int ipExecute(int64 hstmt, int iStmtType, int64 hSearchCol,
out long piNumResRows);
public int ipSchema(int64 dam_hdbc, int64 pMemTree,int iType,
int64 pList, object pSearchObj);
public int ipDCL(int64 hstmt, int iType, out long piNumResRows);
public int ipDDL(int64 hstmt, int iType, out long piNumResRows)
public int ipProcedure(int64 hstmt, int iType,
out long piNumResRows);
public int ipPrivilege(int iStmtType,string pcUserName,
string pcCatalog, string pcSchema,
string pcObjName);
public int ipNative(int64 hstmt, int iCmdType,
string scCmd,
out long piNumResRows);
public int ipSchemaEx(int64 dam_hstmt, int64 pMemTree, int iType,
int64 pList, object pSearchObj);
public int ipProcedureDynamic(int64 hstmt, int iType, out long piNumResRows);
public int ipGetScalarFunction();
}
The optional ipGetTypesInfo, ipGetDSInfo and ipGetLongData methods cannot be part of the Interface Provider class. Instead, these methods must be members of the IP class that implements the IP interface.