Procédez en 3 temps :
1 - créer une vue donnant un GUID
1 2 3
| CREATE VIEW V_NEWID
AS
SELECT NEWID() AS NEW_ID; |
2- créer une fonction qui génère une chaine de caractères en bolobolo :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 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
1 2 3 4 5 6 7 8 9 10 11 12
| 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 :
1 2
| SELECT *
FROM dbo.F_BOLOBOLO_TABLE(20, 10) |
A +
Partager