获取所有列名称并将它们提取到一行中

Get all of the columns name and fetch them into one row

所以,我知道我可以 select 查询的列名称:

SELECT column_name FROM ALL_TAB_COLS WHERE table_name = 'MY_TABLE_NAME'

它工作正常,如果我使用 rownum = 1...

OUTPUT: sz.price

我必须使用它,因为它是 EAS(企业软件)中的查询。如果我不使用它 -> subquery returns more than one row

如何将 MY_TABLE_NAME 中的所有列名称提取到一行中?

expected OUTPUT: sz.price, sz.column2, sz.column3, ....

版本:Oracle Database 11g 11.2.0.4.0 版

你可以使用listagg

select listagg(column_name, ',' )  within group (order by column_name) as "columns"
  from all_tab_columns
 where table_name = 'MY_TABLE_NAME';

这会起作用:

select listagg(col_name, ',') WITHIN GROUP (ORDER BY col_name)from(SELECT column_name  
FROM ALL_TAB_COLS WHERE table_name = 'MY_TABLE_NAME');