相关疑难解决方法(0)

Oracle - RETURNING与聚合函数相结合

Oracle支持RETURNING可能非常有用的子句.

例如对于数据:

CREATE TABLE t(Id INT, Val varchar2(50));

INSERT INTO t(Id, Val)
SELECT 10,'a' FROM dual
UNION ALL SELECT 20,'b' FROM dual
UNION ALL SELECT 30,'a' FROM dual
UNION ALL SELECT 40,'b' FROM dual;
Run Code Online (Sandbox Code Playgroud)

查询:

DECLARE
   l_cnt INT;
BEGIN
   DELETE FROM t RETURNING COUNT(*) INTO l_cnt;
   DBMS_OUTPUT.put_line('l_cnt: ' || l_cnt);
END;
Run Code Online (Sandbox Code Playgroud)

l_cnt:4

它支持MIN/MAX/AVG/SUM/LISTAGG:

DECLARE
   l_max INT;
   l_min INT;
   l_str VARCHAR2(100);
BEGIN
   DELETE FROM t 
   RETURNING MAX(id), MIN(id), LISTAGG(id, ',') WITHIN GROUP(ORDER BY id) 
   INTO l_max, l_min, l_str;
   DBMS_OUTPUT.put_line('l_max:'||l_max||' …
Run Code Online (Sandbox Code Playgroud)

sql oracle aggregate-functions sql-returning

9
推荐指数
1
解决办法
655
查看次数

标签 统计

aggregate-functions ×1

oracle ×1

sql ×1

sql-returning ×1