2010-09-02 79 views
-4

每一行复杂的游标应该与另一个表处连接在一起,整个结果应返回一个指针在返回游标多行

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

plz帮助

+0

因此,您希望cursor1的五行加入到table1的相应行中,那么您希望连接产生的行连接在一起成为一个巨大的单行?那是对的吗? – 2010-09-02 10:59:04

+2

这是真的不清楚你要求什么。一些示例输入数据和预期输出将非常有用。它不一定是完整的数据集,使用EMP和DEPT的简单测试案例可以做到这一点。 – APC 2010-09-02 15:25:53

+0

如果您更改结果集的单词“光标”,它变得更简单。它只是一个联接,而内联视图可能会做到。如何发布代码(或至少它的精简版本) – 2010-09-02 23:09:45

回答

1

这是相当棘手的获取记录从参考游标对结果集的另一个查询的结合。一个更好的想法是打开一个参考所有相关表的SELECT参数。

+0

在连接5个表之后的游标中的列employeeID,employeename,nativeplace,permanentplace,presentplace等...... 表B:employeeid,employeename ,地点,电话,邮编,街道等... 最后,我们应该返回一个游标,在加入游标结果和基于empid和empname的表B结果之后。 是否可以返回一个游标? Plz help – 2010-09-03 04:44:44

0

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

一)定义你的结果行的形状 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行的要求。