您可以使用数组参数创建过程和函数,以便可以将数组变量或常量数组传递给它们。
支持以下流动场景:
代码语法CREATE [OR REPLACE] PROCEDURE ENDIN | OUT | INOUT] ARRAY] | CREATE FUNCTION BEGIN END IN] ARRAY] | ARRAY]
示例代码create procedure my_l_proc_out(out c int array, in b int array) asbegin c = array(123456, 7890); c[3] = :b[1]; c[4] = :b[2];end; do begin declare a int array; declare b int array = array(3, 4); call my_l_proc_out(:a, :b); select :a from dummy;END; 示例代码create function my_sudf_arr (in a int array) returns b int array asbegin b = subarray(:a, 1, 2);end; do begin declare arr_var int array = array(1, 2, 3, 4); select my_sudf_arr(:arr_var) x from dummy;end; 示例代码create function my_tudf_arr (in A int array) returns table(I int) asbegin B = unnest(:A); return select ":A" as I from :B;end; do begin declare arr_var int array = array(1, 2, 3, 4); select * from my_tudf_arr(:arr_var);end; 备注为了提高 SQLScript 可用性,不仅可以在 DML 和查询中使用常量数组,还可以使用数组变量。此外,还可以在 SELECT INTO 子句中使用数组变量。 示例代码create table tab1 (i int, a int array); do begin declare a int array = array(1, 2, 3); declare b int array; insert into tab1 values (1, :a); select tab1.A into b from tab1; select array(1,2,3) into b from dummy; insert into tab1 values (1, array(1, 2, 3)); select :a from dummy;end; 备注现在,系统视图 ELEMENT_TYPES 显示参数的元素数据类型(如果是数组类型)。ELEMENT_TYPES 视图具有列 SCHEMA_NAME、OBJECT_NAME、ELEMENT_NAME 和 DATA_TYPE_NAME。
以下限制适用:
USING 子句中使用数组参数。