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 に答える