用于返回多行的复杂游标

时间:2010-09-02 10:46:53

标签: sql plsql cursor

游标中的每一行都应与另一个表连接,整个结果应返回一个游标

假设cursor1返回5行。 这5行中的每一行都应该与table1连接。 并且所有5行的最终结果应该返回1行。

Plz帮助

2 个答案:

答案 0 :(得分:1)

将来自ref游标的读取记录与另一个查询的结果集相结合是相当棘手的。一个更好的想法是使用SELECT连接所有相关表来打开一个引用游标。

答案 1 :(得分:0)

问题不明确,但听起来像你需要的是这样的事情

a)使用结果行的形状定义对象类型    b)定义该对象类型的集合    c)创建一个具有集合类型的返回类型的函数 - 这可以将游标A作为参数(SYS_REFCURSOR),将游标A中的每一行连接到表B,然后对每个结果行使用PIPE ROW。    d)如果需要最终结果作为光标,那么沿着

行的另一个功能
 FUNCTION complex_query(in_cursor SYS_REFCURSOR) 
 RETURN SYS_REFCURSOR
 IS
     lreturn SYS_REFCURSOR;
 BEGIN
     OPEN lreturn FOR
        (SELECT * FROM TABLE(convert_to_collection(in_cursor)));
     RETURN lreturn;
 END;

或者,您可以直接执行SELECT * FROM TABLE(convert_to_collection(in_cursor))。

我不明白的是要求所有内容都返回1行。