在您描述 SELECT、EXECUTE FUNCTION(或 EXECUTE PROCEDURE)、INSERT 或 UPDATE 语句之后,将由 EXECUTE FUNCTION(或 EXECUTE PROCEDURE)语句返回的值的特征,或者 INSERT 或 UPDATE 语句中每一列的特征返回到系统描述符区域。系统描述符区域中的每一值都描述一个返回的列或返回的表达式的特征。
EXEC SQL get descriptor 'demodesc' value :index :type = TYPE, :len = LENGTH, :name = NAME; printf("Column %d: type = %d, len = %d, name = %s\n", index, type, len, name);
数据库服务器返回到 TYPE 字段内的值是定义的整数。要计算返回的数据类型的值,请测试特定的整数值。要获取关于整数数据类型值的附加信息,请参阅 设置 TYPE 或 ITYPE 字段。
在 X/Open 模式下,X/Open 代码返回到 TYPE 字段。您不可混用这两种模式,因为会导致错误。例如,如果在 X/Open 模式下未定义特定的数据类型,但为 GBase 8s 产品定义了特定的数据类型,则执行 GET DESCRIPTOR 语句可导致错误。
在 X/Open 模式下,如果使用 ILENGTH、IDATA 或 ITYPE,则产生错误消息。该消息说明这些字段不是系统描述符区域的标准 X/Open 字段。
如果访存的值的 TYPE 为 DECIMAL 或 MONEY,在执行 DESCRIBE 语句之后,数据库服务器将列的精度和小数位信息返回到 PRECISION 和 SCALE 字段内。如果 TYPE 不是 DECIMAL 或 MONEY,则取消定义 SCALE 和 PRECISION 字段。