我创建了这个脚本,允许在表中插入一些转储数据。 当我执行这个SPROC并插入@N时,SPROC运行无限。
知道我做错了什么。
CREATE PROCEDURE CreateSampleData
@N INT
AS
DECLARE @row INT
SET @row = 1
DECLARE @randomGuid VARCHAR(36)
DECLARE @randomText VARCHAR
WHILE @row <= @N
BEGIN
-- Set Random Values
SET @randomText = (SELECT LEFT(Cast(Newid() AS VARCHAR(36)), 20))
SET @randomGuid = Newid()
INSERT INTO [XXX].[dbo].[YYY]
([Id],
[eventid],
[eventtitle],
[day number],
[day],
[datetimestart],
[datetimeend],
[location],
[staff],
[uniquestudentreference],
[reminder])
VALUES ( @randomGuid,
@randomText,
@randomText,
'2',
'Monday',
'08:50:00',
'10:50:00',
@randomText,
@randomText,
'Silvia',
'n' )
END
GO
答案 0 :(得分:5)
为什么要循环?一次性做到这一套
INSERT INTO [XXX].[dbo].[YYY]
([Id],
[eventid],
[eventtitle],
[day number],
[day],
[datetimestart],
[datetimeend],
[location],
[staff],
[uniquestudentreference],
[reminder])
SELECT TOP (1000)
NEWID(),
randomText,
randomText,
'2',
'Monday',
'08:50:00',
'10:50:00',
randomText,
randomText,
'Silvia',
'n'
FROM
(SELECT LEFT(Cast(Newid() AS VARCHAR(36)), 20) AS randomText) X
CROSS JOIN
sys.columns c1
CROSS JOIN
sys.columns c2
CROSS JOIN
sys.columns c3
答案 1 :(得分:2)
您需要增加@row
。在您的WHILE
声明结束时,您应该:
SET @row = @row+1
答案 2 :(得分:1)
您没有递增计数器变量,您应该添加:
SET @row = @row + 1
在END子句之前