数组构造函数
数组构造函数返回一个普通数组。 数组构造函数由表达式列表或全选指定。
授权
在SQL语句中引用数组构造函数无需特别授权。 然而,为了使语句执行成功,必须满足语句的所有其他授权要求。
- fullselect
- 返回单列的完全选择。 列的数据类型必须是可以作为数组元素的数据类型在CREATE TYPE(数组)语句中指定的数据类型。 fullselect返回的值是数组的元素。 数组的基数等于全选返回的行数。 fullselect中的ORDER BY子句可用于指定数组元素之间的顺序。 否则,顺序不确定。 结果数组中元素的数据类型与全选结果列的数据类型相同。
- 元素表达式
- 定义数组中元素值的表达式。 表达式必须返回一个值,其数据类型可在CREATE TYPE(数组)语句中指定为数组元素的数据类型。 数组的基数等于元素表达式的数量。 第一个元素表达式被分配给数组索引为1的数组元素。 第二个元素表达式被分配给数组索引为2的数组元素,以此类推。 所有元素表达式必须具有兼容的数据类型。 结果数组中元素的数据类型根据结果数据类型规则中描述的规则确定。
- NULL
- 指定空值。
如果括号内未指定值,则结果为空数组。
数组构造函数不能在嵌入式SQL函数中指定,只能在以下特定情况下指定:
- 作为 SET赋值语句或 SQL PL赋值语句的源值
- 作为用户定义标量函数的返回语句中要返回的值
数组构造函数不能用于构造关联数组。 关联数组只能通过为单个数组元素赋值来构建。
示例
示例1 :假设数组变量 RECENT_CALLS 的数组类型为 PHONENUMBERS。 为 RECENT_CALLS 分配一组固定数字。
SET RECENT_CALLS = ARRAY[9055553907, 4165554213, 4085553678];示例2 :假设数组变量DEPT_PHONES的数组类型为PHONENUMBERS。 将DEPARTMENT_INFO表中检索到的电话号码数组分配给DEPT_PHONES。
SET DEPT_PHONES =
ARRAY[SELECT DECIMAL(AREA_CODE CONCAT '555' CONCAT EXTENSION,16)
FROM DEPARTMENT_INFO
WHERE DEPTID = 624];