Resources

PROVIDER_TYPES Schema Rowset

The PROVIDER_TYPES schema rowset returns metadata that indicates which data types are returned by the provider. Each row in the PROVIDER_TYPES schema rowset corresponds to one data type.

The SAS Data Providers return two data types (numeric data and character data), which means that the PROVIDER_TYPES schema rowset contains only two rows. Numeric data is returned as a DBTYPE_R8 type indicator. Character data is returned as a DBTYPE_STR type indicator.

Only 16 of the 20 columns in the OLE DB specification contain data as illustrated by the following table.

Column Name Type Indicator Mapped Value Restrictions
Supported?
TYPE_NAME DBTYPE_WSTR Data type name. Value is either num or char. No
DATA_TYPE DBTYPE_UI2 The DBTYPE value that corresponds to the current data type (numeric or character). Yes
COLUMN_SIZE DBTYPE_UI4 For numeric data, the maximum precision of the data type. For character data, the maximum length of the column in characters. No
LITERAL_PREFIX DBTYPE_WSTR Character used to prefix a literal of the data type in a text command. No
LITERAL_SUFFIX DBTYPE_WSTR Character used to suffix a literal of the data type in a text command. No
IS_NULLABLE DBTYPE_BOOL VARIANT_TRUE if the data type can be set to NULL; VARIANT_FALSE if the data type cannot be set to NULL. No
CASE_SENSITIVE DBTYPE_BOOL VARIANT_TRUE if the data type is character data and also case-sensitive. VARIANT_FALSE if the data type is not character data or is not case sensitive No
SEARCHABLE DBTYPE_UI4 Indicates whether the data type is searchable. Value is DB_SEARCHABLE if the provider supports ICommandText and the data type can be used with any relative operator in a WHERE clause. Value is NULL if the provider does not support ICommandText. No
UNSIGNED_ATTRIBUTE DBTYPE_BOOL Indicates whether the data type is signed or not. Value is VARIANT_TRUE when the data type is signed; value is VARIANT_FALSE when the data type is not signed. Value is NULL if the signed or unsigned status is not applicable to the data type. No
FIXED_PREC_SCALE DBTYPE_BOOL VARIANT_TRUE if precision and scale are fixed for the data type; VARIANT_FALSE if there is not a fixed precision and scale for the data type. No
AUTO_UNIQUE_VALUE DBTYPE_BOOL VARIANT_TRUE if values of the data type can automatically increment; otherwise, VARIANT_FALSE. No
GUID DBTYPE_GUID The global unique identifier (GUID) for the data type. No
TYPELIB DBTYPE_WSTR The type library for the data type. No
IS_LONG DBTYPE_BOOL VARIANT_TRUE if this type is a BLOB that contains very long data; otherwise, VARIANT_FALSE. No
BEST_MATCH DBTYPE_BOOL VARIANT_TRUE if this data type is the best match between the OLE DB data type indicated by the value in the DATA_TYPE column and all types in the data source. VARIANT_FALSE if this data type is not the best match. No
IS_FIXEDLENGTH DBTYPE_BOOL VARIANT_TRUE if all data of this type has the same length; otherwise, VARIANT_FALSE. No

Restricting Returned Rows

Restrictions enable an OLE DB consumer to restrict the rows that are returned in a schema rowset by IDBSchemaRowset::GetRowset. A restriction is a value for a specific column. When a restriction is passed to IDBSchemaRowset::GetRowset, all rows that are returned in the schema rowset must match the restriction value on the specified column. Restriction values do not support pattern matching or wildcards. For example, the restriction value D_F matches D_F but not DEF.

An OLE DB consumer can programmatically discover the columns on which the providers support restrictions by calling IDBSchemaRowset::GetSchemas.

Note: For definitions of the type indicators, see "Type Indicators" in Microsoft's OLE DB specification documentation.