【问题标题】:Run query against another procedure that returns a cursor对返回游标的另一个过程运行查询
【发布时间】:2017-12-06 08:42:10
【问题描述】:

我有一个具有 OUT sys_refcursor 的过程:

CREATE OR REPLACE PROCEDURE get_detail_data(RC1            IN OUT sys_REFCURSOR)
IS ...

现在在另一个过程中,我正在尝试针对该过程的输出计算一些统计数据,以便将它们插入到表中:

CREATE OR REPLACE PROCEDURE load_stats
AS
cur_detail  SYS_REFcursor;

BEGIN
  -- Load the data from the "get_detail_data" procedure
  get_detail_data(cur_detail);

  -- Now lets calculate some stats against that detail data and insert
  insert into stats_table (
    select
      id_number, sum(amount)
    from table(cur_detail) -- obviously this is not valid
  )

END;

如何对 sys_refcursor 数据集运行查询并将这些结果插入到另一个表中?

【问题讨论】:

    标签: oracle stored-procedures plsql


    【解决方案1】:

    您可以像这样从打开的游标开始获取:

      LOOP  -- Fetches 2 columns into variables
        FETCH cur_detail INTO v_id_number, v_amount;
        EXIT WHEN cv%NOTFOUND;
        [... insert etc ...]
      END LOOP;
    

    我建议在游标内进行聚合,否则您需要按 id_number 排序并在循环内聚合,按 id_number 中断。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      • 1970-01-01
      相关资源
      最近更新 更多