Le titre dit tout. J'ai besoin de créer une table (ID, FirstName, LastName) qui sera peuplée avec des «mots» générés de manière aléatoire qui ont une longueur aléatoire et sont créés à partir de mon «alphabet». Chaque mot doit être généré de manière aléatoire par la base de données. La table entière devrait avoir 1 000 000 lignes. Permettez-moi de vous remplir dans ce que j'ai fait jusqu'à présent.Comment utiliser la fonction dans la déclaration INSERT INTO [SQL SERVR 2016]
créé un VIEW qui génère un nombre aléatoire:
CREATE VIEW [dbo].[RANDOM] AS SELECT RAND() RandomResult
créé un SCALAR FONCTION qui génère un 'mot' lengh hasard dans l'ensemble de déterminées 'lettres' :
CREATE FUNCTION [dbo].[WordGenerator] (@RandomWord VARCHAR(MAX)) RETURNS VARCHAR(MAX) AS BEGIN DECLARE @Alphabet VARCHAR(33) = 'abcdefghijklmnoprstuówxyzęąśłżźćń', @StrLength INT, @LoopCount INT, @RandomString VARCHAR(MAX), @AlphabetLength INT; SELECT @StrLength = (SELECT RandomResult FROM dbo.Random) * 4 + 7, @LoopCount = 0, @RandomString = '', @AlphabetLength = LEN(@Alphabet); WHILE (@LoopCount < @StrLength) BEGIN SELECT @RandomString = @RandomString + SUBSTRING(@Alphabet, CONVERT(INT, (SELECT RandomResult FROM dbo.Random) * @AlphabetLength), 1) SET @LoopCount = @LoopCount + 1; END RETURN @RandomString; END
Maintenant, je veux utiliser cette fonction appelée 'WordGenerator' dans la clause INSERT INTO mais cela ne fonctionne tout simplement pas parce que je ne suis pas capable de l'appeler.
Comment puis-je appeler ma fonction que chaque fois qu'il est censé générer un nouveau mot au hasard?
L'utilisation de SELECT TOP 1 RandomWord FROM dbo.WordGenerator()
ne fonctionne pas. Le SELECT dbo.WordGenerator()
ne fonctionne pas.
L'utilisation de SELECT * FROM dbo.WordGenerator()
ne fonctionne pas.
Des idées?
Ce n'est pas une fonction table. Il suffit donc d'appeler SELECT dbo.WordGenerator() ... pas sûr pourquoi vous avez un paramètre là-dedans. – pmbAustin