【发布时间】:2017-12-19 20:29:31
【问题描述】:
标题说明了一切。我需要创建一个表(ID,FirstName,LastName),该表将填充随机生成的“单词”,这些“单词”具有随机长度,并且是从我的“字母表”创建的。每个单词都需要由 DB 随机生成。整个表应该有 1,000,000 行。
让我来告诉你我到目前为止所做的事情。
-
创建了一个生成随机数的VIEW:
CREATE VIEW [dbo].[RANDOM] AS SELECT RAND() RandomResult -
创建了一个 SCALAR FUNCTION,它从一组确定的“字母”中生成一个随机长度的“单词”:
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 现在我想在 INSERT INTO 子句中使用这个名为“WordGenerator”的函数,但它根本不起作用,因为我无法调用它。
我怎样才能调用我的函数,它每次都应该生成一个新的随机词?
使用SELECT TOP 1 RandomWord FROM dbo.WordGenerator() 不起作用。
使用SELECT dbo.WordGenerator() 不起作用。
使用SELECT * FROM dbo.WordGenerator() 不起作用。
有什么想法吗?
【问题讨论】:
-
它不是表值函数。所以只需调用 SELECT dbo.WordGenerator()... 不知道为什么你有一个参数。
标签: sql-server function call scalar