A provider begins by selecting a subset of types—as represented by type indicators—it wants to support. The provider maps its underlying data types to these types and advertises them through the PROVIDER_TYPES schema rowset. The underlying data types are unimportant to the consumer. What is important is that the provider guarantees that it can always safely transfer data in the type represented by the indicator it advertises for a column or parameter. For examples of how various providers might map underlying data types to OLE DB data types, see the following sections.
Providers are not required to support all OLE DB data types, nor are they required to support all possible conversions among them. For information about what conversions a provider is required to support, see "Data Type Conversion."
Although one goal of OLE DB is to provide a unified type system, there are two exceptions to this goal:
In future versions of OLE DB, consumers and providers will be able to define their own data types through the DBTYPE_UDT (user-defined data type) type indicator.