示例:
create row type custom_type string(street VARCHAR(20), city VARCHAR(20); getDDl(custom_type);
我认为服务器应该存储有关行类型字段的信息。但是,我没有在系统表中找到有关字段或 ddl 类型的信息。文档说 - Field Definition 子句定义了数据类型的有序列表。但目前我找不到该列表的存储位置。 Informix 是否在任何地方存储有关行类型字段的信息?
示例中给出的语法似乎不正确,或者至少不被 Informix 服务器识别。如果改写为:
CREATE ROW TYPE custom_type(street VARCHAR(20), city VARCHAR(20));
然后它会被 Informix 接受为有效。
命令
dbschema -d <database> -u all
可用于获取行类型的定义。与 dbschema
命令的其他选项不同,只有关键字 all
可用于获取有关所有用户定义的数据类型的信息。无法使用特定行类型的名称。
在内部,与行类型相关的信息存储在 SYSXTDTYPES 和 SYSATTRTYPES 系统目录表中。用于检索此信息的示例查询:
SELECT x.name, a.* FROM sysattrtypes a, sysxtdtypes x
WHERE a.extended_id = x.extended_id AND x.name = "custom_type";
这提供了输出:
name custom_type
extended_id 2049
seqno 1
levelno 0
parent_no 0
fieldname
fieldno 0
type 4118
length 42
xtd_type_id 0
name custom_type
extended_id 2049
seqno 2
levelno 1
parent_no 1
fieldname street
fieldno 1
type 13
length 20
xtd_type_id 0
name custom_type
extended_id 2049
seqno 3
levelno 1
parent_no 1
fieldname city
fieldno 2
type 13
length 20
xtd_type_id 0
有关如何解释存储信息的详细信息,请参阅 SYSATTRYPES 系统目录的文档。