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 |
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.