Using Manual Accessors
There are four things to do when handling an unknown command:
Determine the parameters
Execute the command
Determine the output columns
See if there are multiple return rowsets
To do these things with the OLE DB Consumer Templates, use the CManualAccessor
class and follow these steps:
Open a
CCommand
object withCManualAccessor
as a template parameter.CCommand<CManualAccessor, CRowset, CMultipleResults> rs;
Query the session for the
IDBSchemaRowset
interface and use the procedure parameters rowset. If theIDBSchemaRowset
interface isn't available, query for theICommandWithParameters
interface. CallGetParameterInfo
for information. If neither interface is available, you can assume there are no parameters.For each parameter, call
AddParameterEntry
to add the parameters and set them.Open the rowset but set the bind parameter to
false
.Call
GetColumnInfo
to retrieve the output columns. UseAddBindEntry
to add the output column to the binding.Call
GetNextResult
to determine if more rowsets are available. Repeat steps 2 through 5.
For an example of a manual accessor, see CDBListView::CallProcedure
in the DBVIEWER sample.