如何在Informix数据库中查询自定义不透明类型(Opaque Types)
关于Informix自定义不透明类型的系统表与区分方法
存储用户定义类型的核心系统表:
除你提到的sysxtdtypes外,Informix专门用sysopclsses系统表存储不透明类型的元数据,包括类型关联的操作符、函数等信息。另外sysxtdtypeattrs会记录类型的属性参数,sysxtypeauth存储类型权限,但sysopclsses是区分自定义不透明类型的关键表。区分自定义不透明类型与基础类型:
- 自定义不透明类型在
sysxtdtypes中mode虽标记为B(基础类型),但这类类型仅会出现在sysopclsses表中,原生基础类型(如int、char)不会在sysopclsses里有对应条目。 sysxtdtypes的type字段值41并非“未知类型”,而是Informix对用户自定义不透明类型的内部标识——原生基础类型的type都是预定义固定值(比如int为2,varchar为12),只有自定义不透明类型会使用41这个值。
- 自定义不透明类型在
关于
extended_id的说明:extended_id是服务器自动生成的唯一标识符,用于系统内部关联不同元数据表的条目,它基于类型创建顺序和内部命名空间生成,没有公开的手动计算规则,你只需用它关联sysxtdtypes和sysopclsses即可。查询自定义不透明类型列表的SQL示例:
SELECT t.name AS opaque_type_name, t.extended_id, t.owner FROM sysxtdtypes t INNER JOIN sysopclsses o ON t.extended_id = o.oid WHERE t.type = 41 AND t.mode = 'B';
该查询通过关联两个系统表,筛选出所有用户自定义的不透明类型,同时返回类型名称、ID和所属用户。
内容的提问来源于stack exchange,提问作者What
相关产品推荐
相关产品推荐

