1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| --CREATE TABLE Test( cle Int PRIMARY KEY, Libelle varchar(50), ext int)
CREATE FUNCTION fnSearch( @Aext Int)
RETURNS @_ret TABLE( cle Int PRIMARY KEY, Libelle varchar(50), ext int) AS
BEGIN
DECLARE @_tmp TABLE( cle Int PRIMARY KEY)
DECLARE @_tmp2 TABLE( cle Int PRIMARY KEY, Libelle varchar(50), ext int)
DECLARE @i Int
INSERT @_tmp SELECT cle FROM Test WHERE ( ext = @Aext )
WHILE ( Exists( SELECT * FROM @_tmp ) ) BEGIN
DELETE @_tmp2
SELECT TOP 1 @i = cle FROM @_tmp
INSERT @_tmp2
SELECT cle, Libelle, ext
FROM Test
WHERE ( cle = @i ) Or ( ext = @i )
INSERT @_ret
SELECT t.cle, t.Libelle, t.ext
FROM @_tmp2 t
LEFT JOIN @_ret r
ON ( r.cle = t.cle )
WHERE ( r.cle IS NULL )
INSERT @_tmp
SELECT t.cle
FROM @_tmp2 t
LEFT JOIN @_tmp r
ON ( r.cle = t.cle )
WHERE ( r.cle IS NULL )
DELETE @_tmp WHERE ( cle = @i )
END
RETURN
END |
Partager