【问题标题】:Oracle 10g: Inserting multiple rowsOracle 10g:插入多行
【发布时间】:2018-08-28 13:20:40
【问题描述】:

我有以下select statement

select dte, wm_concat(issue) as issues
from ((select date_a as dte, issue from t where date_a is not null) union all
      (select date_b, issue from t where date_b is not null)
     ) di
group by dte
order by dte;

返回多行,例如:

DTE        | ISSUES
-----------+---------
01/JUN/91  | EE
01/JUN/03  | EE
01/JAN/06  | HH
01/AUG/06  | EE
01/AUG/08  | EE,HS,HE

我想将这些记录插入到一​​个表中。

问题

我应该如何编写插入语句?我应该使用游标,因为似乎 INSERT 可以一次处理一行?

【问题讨论】:

    标签: sql oracle10g sql-insert


    【解决方案1】:

    使用选择作为插入源:

    insert into some_table (dte, issues)
    select dte, wm_concat(issue) as issues
    from (
       select date_a as dte, issue 
       from t 
       where date_a is not null
       union all
       select date_b, issue 
       from t 
       where date_b is not null
    ) di
    group by dte;
    

    无需将 UNION 的各个查询放在括号之间。

    【讨论】:

    • 谢谢!有用。标记为正确并投赞成票。如何在此插入中添加一个值 i_ref 传递给执行此插入的函数?换句话说,对于每个插入,i_ref 也必须插入。如果我应该提出一个单独的问题,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 2011-05-07
    • 2014-09-14
    • 1970-01-01
    • 2016-12-03
    相关资源
    最近更新 更多