有没有一种巧妙的方法来聚合 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;
使用
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;
/