我对DB2中的用户定义类型有疑问(v.9.7.0.441)。我想创建一个具有另一个用户定义类型的属性数组的类型。让我告诉你我的意思是一个简短的(虚构的)例子:
这是我想在另一种类型中使用的UDT
CREATE TYPE sport AS
(
Sport VARCHAR(10)
) MODE DB2SQL;
这是UDT应该使用上面的那个
CREATE TYPE person AS
(
plays sport ARRAY[3] // 'REF(sport)' or 'plays VARCHAR(10) ARRAY[3]' don't work either
) MODE DB2SQL;
DB2只是说令牌ARRAY [3]是意料之外的。
任何暗示这里可能出错的地方?到目前为止,在UDT中有一个CHAR数组就足够了......
提前致谢
答案 0 :(得分:0)
好的,
根据db2's CREATE TYPE (array) statement“数组类型只能用作以下数据类型:
和
使用数组类型定义的变量或参数只能在复合SQL(已编译)语句中使用 “
所以它不可能在用户定义的类型中使用数组类型: - /
答案 1 :(得分:0)
我会假设以下内容......
CREATE TYPE sport AS(Sport VARCHAR(10)) MODE DB2SQL;
CREATE TYPE PersonT AS(plays SportT ARRAY[3]) MODE DB2SQL;
CREATE TYPE SportArrayT AS SportT ARRAY[3];
CREATE TYPE PersonT AS (plays SportT SportArrayT) MODE DB2SQL;
但是,第3个语句失败了。显然,不允许使用用户定义类型(或REF(SportT))的数组: - (
答案 2 :(得分:-1)
查看doc for CREATE TYPE (array)。
我不确定你要做什么,但他们给出的例子是这样的:
CREATE TYPE CAPITALSARRAY AS VARCHAR(30) ARRAY[VARCHAR(20)]