Voici deux fonction pour générer, la première, une châine de caractères aléatoire, l’autre une table de chaînes.
Nous allons procéder en 3 temps :
1 – créer une vue donnant un GUID :
CREATE VIEW V_NEWID
AS
SELECT NEWID() AS NEW_ID;
AS
SELECT NEWID() AS NEW_ID;
2- créer une fonction qui génère une chaine de caractères en bolobolo :
CREATE FUNCTION F_BOLOBOLO (@MAXCARS INT)
RETURNS VARCHAR(max)
AS
BEGIN
IF @MAXCARS = 0 RETURN '';
IF @MAXCARS < 0 RETURN NULL;
DECLARE @OUT VARCHAR(max);
SET @OUT = ''
DECLARE @MOT CHAR(16);
WHILE LEN(@OUT) < @MAXCARS
BEGIN
SET @MOT = CAST(CAST((SELECT NEW_ID FROM V_NEWID) AS VARBINARY(max)) AS CHAR(16));
SET @OUT = @OUT + @MOT;
END;
RETURN RIGHT(@OUT, @MAXCARS)
END;
Test :
SELECT dbo.F_BOLOBOLO(32)
Pour une chaine de 32 caractères
3 – créer une fonction qui génère une table de n lignes de m caractères en bolobolo
CREATE FUNCTION F_BOLOBOLO_TABLE (@MAXCARS INT, @MAXLIGNE INT)
RETURNS @T TABLE (LIGNE VARCHAR(max))
AS
BEGIN
IF @MAXLIGNE <= 0 RETURN;
WHILE @MAXLIGNE > 0
BEGIN
INSERT INTO @T SELECT dbo.F_BOLOBOLO(@MAXCARS);
SET @MAXLIGNE = @MAXLIGNE - 1
END;
RETURN;
END;
Test :
SELECT *
FROM dbo.F_BOLOBOLO_TABLE(20, 10)
FROM dbo.F_BOLOBOLO_TABLE(20, 10)
--------
Frédéric Brouard, SQLpro - ARCHITECTE DE DONNÉES, http://sqlpro.developpez.com/
Expert bases de données relationnelles et langage SQL. MVP Microsoft SQL Server
www.sqlspot.com : modélisation, conseil, audit, optimisation, tuning, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *