阵列级联

问题描述:

这里我尝试的concat whih用作如下所示的代码执行阵列:阵列级联

--CONCATENATE TWO ARRAYS 

CREATEPROCEDURE"keerthi"."ARRAY_COMPLEX_CONCAT3" 
(OUT OUTTAB TABLE (SEQ INT,ID INT)) 
LANGUAGE SQLSCRIPT AS BEGIN 
DECLARE id1,id2,id3,id4 , id5 INTEGER ARRAY; 
id1[1] := 1; 
id1[2]:=2; 
id2[1] := 1; 
id2[2]:=4; 
id3 := CONCAT(:id1, :id2); 
id4 := :id1 || :id2; 
rst = UNNEST(:id3) WITH ORDINALITY AS ("ID","SEQ"); 
id5 := :id4 || ARRAY_AGG(:rst."ID"ORDERBY"SEQ"); 
outtab = SELECT SEQ,ID FROM :rst ORDERBY "SEQ"; 
END; 

该过程被成功地执行,但结果是不符合期望:

| Seq | Id | 
-------------- 
| 1 | 1 | 
| 2 | 2 | 
| 3 | 1 | 
| 4 | 4 | 

结果我的预期是:

| Seq | Id | 
-------------- 
| 1 | 1,2 | 
| 2 | 1,4 | 

ARRAY_AGG功能不“汇总和组浪潮单元值“,正如你预期的结果所暗示的那样。

取而代之的是,它从一个表变量中取出一列,并从中取出一个数组。每个单列值都有自己的单元格。结果是一个与表变量中的行数相同的数组。

如果您不需要outtab中的Id为ARRAY类型,那么您可以使用STRING_AGG聚合函数进行研究。