>CLEAR >#DEFINE RANGESTART 1 >#DEFINE RANGEEND 100 > >CREATE CURSOR TWITHHOLES (F1 INT NULL) > >INSERT INTO TWITHHOLES VALUES (3) >INSERT INTO TWITHHOLES VALUES (4) >INSERT INTO TWITHHOLES VALUES (5) >INSERT INTO TWITHHOLES VALUES (8) >INSERT INTO TWITHHOLES VALUES (9) >INSERT INTO TWITHHOLES VALUES (11) >INSERT INTO TWITHHOLES VALUES (15) >INSERT INTO TWITHHOLES VALUES (NULL) > >findHoles() >BROWSE > >INSERT INTO TWITHHOLES VALUES (1) >INSERT INTO TWITHHOLES VALUES (100) > >findHoles() > >BROWSE > >FUNCTION findHoles > > SELECT NVL(T1.F1+1 ,RANGESTART) holeBegin ; > , NVL(MIN(T2.F1)-1,RANGEEND) holeEnd ; > INTO CURSOR THOLES ; > FROM (TWITHHOLES T1 LEFT JOIN TWITHHOLES T3 ON T3.F1=T1.F1+1); > FULL JOIN ; > (TWITHHOLES T2 LEFT JOIN TWITHHOLES T4 ON T4.F1=T2.F1-1); > ON T2.F1>T1.F1+1 ; > WHERE T3.F1 IS NULL AND T4.F1 IS NULL ; > GROUP BY T1.F1 ; > HAVING NVL(T1.F1+1,RANGESTART)<=holeEnd >