有没有办法获取row类型创建的sql语句?

问题描述 投票:0回答:1

示例:

create row type custom_type string(street VARCHAR(20), city VARCHAR(20); getDDl(custom_type); 

我认为服务器应该存储有关行类型字段的信息。但是,我没有在系统表中找到有关字段或 ddl 类型的信息。文档说 - Field Definition 子句定义了数据类型的有序列表。但目前我找不到该列表的存储位置。 Informix 是否在任何地方存储有关行类型字段的信息?

informix rowtype user-defined-data-types
1个回答
0
投票

示例中给出的语法似乎不正确,或者至少不被 Informix 服务器识别。如果改写为:

CREATE ROW TYPE custom_type(street VARCHAR(20), city VARCHAR(20));

然后它会被 Informix 接受为有效。

命令

dbschema -d <database> -u all
可用于获取行类型的定义。与
dbschema
命令的其他选项不同,只有关键字
all
可用于获取有关所有用户定义的数据类型的信息。无法使用特定行类型的名称。

在内部,与行类型相关的信息存储在 SYSXTDTYPESSYSATTRTYPES 系统目录表中。用于检索此信息的示例查询:

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 系统目录的文档。

© www.soinside.com 2019 - 2024. All rights reserved.