Trouver « les trous » dans un fichier

Voilà une requête qui permet de trouver un identifiant « libre » dans un fichier :
WITH TMP AS (
select ROW_NUMBER() over(order by MACLE) AS NUM,
MACLE as OBJ from FICHIER order by MACLE )
select cast(NUM AS dec(3, 0)) from TMP
where OBJ <> NUM and NUM <= 999
order by NUM FETCH first 1 rows only

Pour cet exemple MACLE est la clé unique du fichier et est un DEC(3, 0)
Cette requête doit être lancée si « MAX(MACLE) + 1 » n’aboutit pas.

Print Friendly, PDF & Email