【问题标题】:oracle pl/sql results into one stringoracle pl/sql 结果为一个字符串
【发布时间】:2012-06-12 20:20:14
【问题描述】:

我正在尝试创建一个简单的存储过程,将查询结果存储到一个字符串中。

v_string1 varchar2(100);

Select column1
From dual;

会回来

column 1
--------
aaaa
bbbb
cccc

我想将“aaaa, bbbb, cccc' 存储到 v_string1 中。 我能想到的只是一个光标...... 有没有更好的方法来处理这个问题?

【问题讨论】:

标签: sql oracle stored-procedures plsql


【解决方案1】:

使用SQL Fiddle:

select LISTAGG(name, ',') WITHIN GROUP (ORDER BY 1) AS names
from temp_table

【讨论】:

  • Coolio...我在 +1 之前从未见过这个功能!
  • 谢谢。我也没有,直到我用谷歌搜索它。很高兴它有帮助,它也让我学到了一些新东西:D
【解决方案2】:

在 Oracle 11G 之前可以使用纯 SQL 的另一个选项,但仍限制为字符串的 4000 个字符。

Select ltrim(max(names), ', ') as names
From (
  Select sys_connect_by_path(name, ' ,') as names
  From (
    Select name, row_number() over (order by name) as rown
    From temp_table
  )
  Start with rown = 1
  Connect by rown = prior rown + 1
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 2011-11-09
    • 2014-10-19
    • 1970-01-01
    相关资源
    最近更新 更多