The SQL Opaque Data Type
An opaque data type is a user-defined data type that can be used in the same way as the Informix built-in data types. The opaque data type allows you to define new data types for your database applications.
An opaque data type is fully encapsulated; the database server does not know about the internal format of an opaque data type. Therefore, the database server cannot make assumptions about how to access a column having an opaque data type. The database developer defines a data structure that holds the opaque-type information and support functions that tell the database server how to access this data structure.
You can access the value of an opaque data type from an ESQL/C application in one of two ways:
Transfer of the external format between the client application and database server is supported by the database server through the input and output support functions of the opaque data type.
Transfer of the internal format between the client application and database server is supported by the database server through the receive and send support functions of the opaque data type.
The following table shows the ESQL/C data types you can use to access an opaque data type.
This chapter uses an opaque data type called circle to demonstrate how ESQL/C lvarchar and fixed binary host variables access an opaque data type. This data type includes an x,y coordinate, to represent the center of the circle, and a radius value. Figure 10-1 shows the internal data structures for the circle data type.
Figure 10-2 shows the SQL statements that register the circle data type and its input, output, send, and receive support functions in the database.
Suppose the input and output functions of the circle data type define the following external format that Figure 10-3 shows.
Figure 10-4 shows the SQL statements that create and insert several rows into a table called circle_tab, which has a column of type circle.
|