IColumnsRowset::GetAvailableColumns
Returns a list of optional metadata columns that can be supplied in a column metadata rowset.
HRESULT GetAvailableColumns (
DBORDINAL *pcOptColumns,
DBID **prgOptColumns);
Parameters
- pcOptColumns
- [out]
A pointer to memory in which to return the count of the elements in *prgOptColumns. If an error occurs, *pcOptColumns is set to zero.
- prgOptColumns
- [out]
A pointer to memory in which to return an array of the optional columns this provider can supply. In addition to the optional columns listed in IColumnsRowset::GetColumnsRowset, the provider can return provider-specific columns. The rowset or command allocates memory for the structures and returns the address to this memory; the consumer releases this memory with IMalloc::Free when it no longer needs the list of columns. If *pcOptColumns is zero on output or an error occurs, the provider does not allocate any memory and ensures that *prgOptColumns is a null pointer on output.
Return Code
- S_OK
- The method succeeded.
- E_FAIL
- A provider-specific error occurred.
- E_INVALIDARG
- pcOptColumns or prgOptColumns was a null pointer.
- E_OUTOFMEMORY
- The provider was unable to allocate sufficient memory in which to return the column IDs.
- E_UNEXPECTED
- ITransaction::Commit or ITransaction::Abort was called, and the object is in a zombie state. This error can be returned only when the method is called on a rowset.
- DB_E_NOCOMMAND
- No command text was set. This error can be returned only when this method is called from the command object.
- DB_E_NOTPREPARED
- The command exposed ICommandPrepare, and the command text was set but the command was not prepared. This error can be returned only when this method is called from the command object.
- DB_E_NOTREENTRANT
- The provider called a method from IRowsetNofity in the consumer that had not yet returned, and the provider does not support reentrancy in this method.
- DB_SEC_E_PERMISSIONDENIED
- The consumer did not have sufficient permission to retrieve the available optional metadata columns.
Comments
This method makes no logical change to the state of the object.
Calling IColumnsRowset::GetAvailableColumns on a command before the command is executed might be an expensive operation.
See Also
IColumnsRowset::GetColumnsRowset