0

我有一个存储功能

 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

我想使用游标返回这个结果集。

4

1 回答 1

2

我看不到您在函数中使用任何一个输入参数的位置。我会假设这是故意或疏忽,因为您正在简化代码。您的查询似乎还缺少外部查询中的 、 和 表traininfo之间schedule的连接条件。您的嵌套语句正在转身并查询andtrainslot似乎很奇怪INscheduletrainslot鉴于缺乏连接条件。我不知道这是否是复制和粘贴错误的结果,还是在发布问题时遗漏了什么,或者这些是否是真正的问题。我将对您打算编写的查询进行猜测,但如果我的猜测是错误的,您必须告诉我们您的查询应该做什么(发布示例数据和预期输出对此非常有帮助) .

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;
于 2012-04-06T22:12:40.093 回答