Plsql 如何从oracle存储函数返回游标或结果集

Plsql 如何从oracle存储函数返回游标或结果集,plsql,oracle10g,Plsql,Oracle10g,我有一个存储函数 CREATE OR REPLACE FUNCTION schedule(name in varchar2,pass in varchar2 ) begin select t.name,s.starttime from traininfo t,schedule s, trainslot ts where t.trainid in( select ts.trainid from trainslot where ts.slotid in (sel

我有一个存储函数

 CREATE OR REPLACE FUNCTION schedule(name in varchar2,pass in varchar2 )
    begin
    select t.name,s.starttime from traininfo t,schedule s, trainslot ts 
    where t.trainid in( select ts.trainid from trainslot 
    where ts.slotid in (select s.slotid from schedule s 
    where s.source='dhaka'
    and s.dest='bogra' ))
    end

我想使用光标返回此结果集。

我看不出您在函数中使用了哪一个输入参数。我假设这是故意的,或者是疏忽,因为您正在简化代码。您的查询似乎还缺少在外部查询中的
traininfo
schedule
trainslot
表之间联接的条件。考虑到缺少联接条件,您在中嵌套的
语句正在回过头来查询
时间表
列车槽
表,这似乎很奇怪。我不知道这是否是由于复制和粘贴错误或在发布问题时遗漏了什么,或者这些是否是真正的问题。我将对您打算编写的查询进行猜测,但如果我的猜测是错误的,您必须告诉我们您的查询应该做什么(发布示例数据和预期输出将非常有帮助)

CREATE OR REPLACE FUNCTION schedule(name in varchar2,pass in varchar2 )
  RETURN sys_refcursor
is
  l_rc sys_refcursor;
begin
  open l_rc
   for select t.name, s.starttime
         from traininfo t,
              schedule  s,
              trainslot ts
        where t.trainid = ts.trainid
          and s.slotid  = ts.slotid
          and s.source  = 'dhaka'
          and s.dest    = 'borga';
  return l_rc;
end;