我有一个存储功能
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
我想使用游标返回此结果集。
答案 0 :(得分:2)
我看不到你在哪里使用函数中的任何一个输入参数。我认为这是故意的或疏忽的,因为你正在简化代码。您的查询似乎也缺少在外部查询中的traininfo
,schedule
和trainslot
表之间加入的条件。看来,由于缺少连接条件,您的嵌套IN
语句正在转向并查询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;