PL/SQL 等效于 T-SQL 面向集合的变量连接

Cad*_*ant 2 sql oracle plsql string-aggregation

在 Microsoft SQL Server (T-SQL) 中,有一种简洁、优雅且高性能的面向集合的方法可以使用表中多行值的串联来填充 VARCHAR 变量,即:

DECLARE @vals NVARCHAR(MAX)
SELECT @vals = ISNULL(@vals + ',', '')
+ <some_varchar_column>
FROM <some_table>
Run Code Online (Sandbox Code Playgroud)

@vals用逗号分隔的字符串填充some_column所有行中的所有值some_table(例如,“value1,value2,value3,...”)。

我如何以同样优雅的方式(无需编写循环/游标)在 Oracle PL/SQL 中执行类似的操作?

Lit*_*oot 8

这个?

SQL> select listagg(dname, ',') within group (order by dname) result
  2  from dept;

RESULT
-------------------------------------------------------------------------
ACCOUNTING,OPERATIONS,RESEARCH,SALES

SQL>
Run Code Online (Sandbox Code Playgroud)