0

関数に次のコードがあります

        CREATE OR REPLACE FUNCTION my_func (
        v_dt events.raised_date%TYPE
        )
        RETURN SYS_REFCURSOR
    IS    
            p_events    SYS_REFCURSOR;

        OPEN p_events FOR
                SELECT  event_id
                  FROM  events
                 WHERE  raised_date = v_dt;
RETURN p_events;
END;

p_eventsカーソルに 100 が存在するかどうかを確認したいと思います。関数内でこれを行うにはどうすればよいですか。

どんな助けも非常に高く評価されます。

4

3 に答える 3

1

このようにできます

declare
  evt EVENTS%ROWTYPE;
  found_100 boolean := false;
begin
  loop
    fetch p_events into evt;
    exit when p_events%NOTFOUND;
    if evt.event_id = 100 then
      found_100 := true;
      exit;
    end if;
  end loop;
end;

ただし、実際には1回のフェッチしか必要ない数百万のレコードをフェッチする可能性があるため、非常に非効率的です。

于 2013-06-17T12:33:36.047 に答える