阵列级联
问题描述:
这里我尝试的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
聚合函数进行研究。