【问题标题】:How to add rows into a cursor manually in stored procedure in oracle如何在oracle的存储过程中手动将行添加到游标中
【发布时间】:2013-03-01 04:26:08
【问题描述】:

我在存储过程中有一个游标。我想从查询中选择一些数据并将该数据插入游标,然后再次从另一个查询中选择一些数据并将该数据附加到同一个游标中。

我该怎么做?

【问题讨论】:

  • 简单光标还是 ref_cursor man?
  • @Thiyagu - 是的简单游标,我想从存储过程中返回该游标。
  • 哈哈,所以没有人......对于这种情况,你必须使用 ref_cursor

标签: oracle11g


【解决方案1】:

游标是 SQL 语句的只读句柄。游标没有数据。您不能将数据附加到游标。对游标唯一能做的就是获取下一行。

您可以将用于打开游标的 SQL 语句更改为UNION 一起使用两个不同的 SQL 语句,即

OPEN rc FOR 
  SELECT <<column list>>
    FROM table1
  UNION ALL
  SELECT <<column list>>
    FROM table2;

RETURN rc;

【讨论】:

  • 有没有其他办法,我想要什么
  • @NamanGoyal - 我不太确定你想要完成什么。正如我所说,问题的陈述没有多大意义。如果您可以解释您要解决的业务问题以及合并两个未能解决问题的查询的结果是什么,我们或许可以提出替代方案。
【解决方案2】:

我不知道程序返回值是如何在这里看到的,这里使用的是简单的 ref_cursor

create or replace function test_ref() return sys_refcursor is
     temp sys_refcursor;
   begin
     open temp for 'select * from hr.employees ;
     return v_rc;
   end;
   / 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多