0

我创建了这个脚本,允许在表中插入一些转储数据。当我执行这个 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
4

3 回答 3

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
于 2013-03-14T10:22:06.117 回答
2

你需要增加@row. 在你的WHILE陈述结束时,你应该写:

SET @row = @row+1
于 2013-03-14T10:17:17.317 回答
1

你没有增加你的计数器变量,你应该添加:

SET @row = @row + 1

就在 END 子句之前

于 2013-03-14T10:19:40.697 回答