DB2 SQL数组在用户定义类型的attribute-defs中

时间:2011-07-10 12:06:33

标签: sql db2 user-defined-types

我对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数组就足够了......

提前致谢

3 个答案:

答案 0 :(得分:0)

好的,

根据db2's CREATE TYPE (array) statement“数组类型只能用作以下数据类型:

  • 复合SQL(已编译)语句中的局部变量
  • SQL例程的参数
  • Java过程的参数(仅限普通数组)
  • SQL函数的返回类型
  • 全局变量

使用数组类型定义的变量或参数只能在复合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)]