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

関数で入力パラメーターのいずれかを使用している場所がわかりません。コードを単純化しているため、意図的または見落としのいずれかであると想定します。また、外側のクエリでtraininfoschedule、およびテーブルを結合するための条件がクエリに欠落しているようです。ネストされたステートメントが向きを変えてandを照会しているのtrainslotは奇妙に思えます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 に答える