Function 在另一个游标中使用/调用游标-PL/Sql

Function 在另一个游标中使用/调用游标-PL/Sql,function,plsql,database-cursor,Function,Plsql,Database Cursor,我有一个带有游标的函数,它返回一个ID。我需要使用第一个游标的ID结果在另一个游标中获取一些字段 所以我的第一个光标是: CREATE OR REPLACE function get_id(id number) CURSOR child_id IS SELECT table1_id FROM table1,child WHERE child_id = id AND table1_id = child_

我有一个带有游标的函数,它返回一个ID。我需要使用第一个游标的ID结果在另一个游标中获取一些字段

所以我的第一个光标是:

CREATE OR REPLACE function get_id(id number) 

CURSOR child_id
   IS
       SELECT table1_id
            FROM table1,child
              WHERE child_id = id
          AND table1_id = child_chld_id;
理想情况下,我的第二个光标应该是:

cursor grandchild_id
is
select table1_id from table1,child
where child_id = (return value of id from cursor child_id)
and table1_id = child_chld_id; 

如何执行此操作?

游标可以接受参数:

cursor grandchild_id(other_child_id number)
is
select table1_id from table1,child
where child_id = grandchild_id.other_child_id
and table1_id = child_chld_id; 
无论何时打开
孙子id
光标,只需将适当的值作为参数传递:

grandchild_id(the_value_you_obtained_from_the_first_cursor)

@安妮-谢谢你的编辑。我从来不知道怎么做!!基本上:粘贴代码,选择代码,单击
{}
按钮并确保上面的行为空。希望有帮助!为什么不将它们合并到一个查询中?它很可能会更有效率。我将在Oracle Discoveryr中使用它,它将运行在数据库中的所有ID中…在这种情况下它将如何工作?谢谢你answering@Cindy例如我不知道。您可能希望编辑您的问题,以包括您正在使用Discoverer这一事实。