, sqlpro Il arrive parois que l'on ait besoin épisodiquement d'une série de nombre continue. Voici une fonction permettant cela...
-- fonction de génération d'une série
CREATE FUNCTION dbo.F_T_GET_SERIE (@IDEBUT INT, @IFIN INT)
RETURNS @T TABLE (I INT)
/******************************************************************************
* fonction table de génération d'une série discrète d'entiers *
*******************************************************************************
* Fred. Brouard - http://sqlpro.developpez.com - www.sqlspot.com - 2009-03-20 *
******************************************************************************/
AS
BEGIN
IF @IFIN IS NULL OR @IDEBUT IS NULL OR @IFIN < @IDEBUT
RETURN;
DECLARE @I INT;
SET @I = @IDEBUT;
WHILE @I <= @IFIN
BEGIN
INSERT INTO @T VALUES (@I);
SET @I += 1;
END
RETURN;
END
GO
Exemple d'utilisation :
SELECT *
FROM dbo.F_T_GET_SERIE (7, 13)
I
-----------
7
8
9
10
11
12
13
NOTA : il est généralement nettement préférable d'utiliser une table d'entiers instancié dans votre base que d'utiliser cette fonction pour des raisons de performances.
---
Frédéric BROUARD, Spécialiste modélisation, bases de données, optimisation, langage SQL.
Le site sur le langage SQL et les S.G.B.D. relationnels : http://sqlpro.developpez.com/
Expert SQL Server http://www.sqlspot.com : audit, optimisation, tuning, formation
* * * * * Enseignant au CNAM PACA et à l'ISEN à Toulon * * * * *
CREATE TABLE PAYS (Nom_Pays VARCHAR(16))
INSERT INTO PAYS VALUES ('France')
INSERT INTO PAYS VALUES ('Italie')
INSERT INTO PAYS VALUES ('Pays-Bas')
INSERT INTO PAYS VALUES ('Espagne')
INSERT INTO PAYS VALUES ('Allemagne')
INSERT INTO PAYS VALUES ('Maroc')
INSERT INTO PAYS VALUES ('Algérie')
SELECT ROW_NUMBER() OVER(ORDER BY Nom_Pays) + 6 AS N,
Nom_Pays
FROM PAYS
N Nom_Pays
-------------------- ----------------
7 Algérie
8 Allemagne
9 Espagne
10 France
11 Italie
12 Maroc
13 Pays-BasVous devez être identifié pour poster un commentaire.
Copyright © 2000-2012 - www.developpez.com