Oracle PL/SQL 中聚合为集合

问题描述 投票:0回答:1

有没有一种巧妙的方法来聚合 PL/SQL 中的表数据并在一个查询中获取单个值和集合?换句话说,我们能否轻松组合以下两个查询

SELECT AVG(sal)
INTO v_sal
FROM emp;

SELECT DISTINCT deptno
BULK COLLECT INTO v_deptnos
FROM emp;

变成这样:

SELECT AVG(sal), ARRAY_AGG(DISTINCT deptno)
INTO v_sal, v_deptnos
FROM emp;
oracle plsql collections aggregate oracle19c
1个回答
0
投票

使用

CAST
COLLECT
:

DECLARE
  v_sal EMP.SAL%TYPE;
  v_deptnos SYS.ODCIVARCHAR2LIST;
BEGIN
  SELECT AVG(sal),
         CAST(COLLECT(DISTINCT deptno) AS SYS.ODCIVARCHAR2LIST)
  INTO   v_sal,
         v_deptnos
  FROM   emp;
END;
/
© www.soinside.com 2019 - 2024. All rights reserved.