为什么这个sql行无效

时间:2012-04-16 13:56:57

标签: sql database tsql

它表示命令已成功执行,但组织表中没有插入任何值。

DECLARE @now DATETIME
SET @now = GETDATE()
DECLARE @numtoinsert INT
SET @numtoinsert = 100

DECLARE @counter INT
SET @counter = 101
WHILE @counter < @numtoinsert
BEGIN
SET @counter = @counter + 1

INSERT INTO [MVServices].[dbo].[Organization]
       ([Organization_Id]
       ,[Business_Number]
       ,[Legal_Name]
       ,[Common_Name]
       ,[Operating_As]
       ,[Sort_Name]
       ,[Effective_Date]
       ,[Expiry_Date]
       ,[Created_By]
       ,[Created_Date]
       ,[Last_Changed_By]
       ,[Update_Date])
 VALUES
       (@counter
       ,1234
       ,'ABC Construction'
       ,'ABC'
       ,'ABC Construction'
       ,'ABC Construction'
       ,@now
       ,null
       ,'seed'
       ,@now
       ,null
       ,null)

       END

4 个答案:

答案 0 :(得分:9)

它没有插入任何内容,因为您的WHILE条件是:

WHILE @counter < @numtoinsert 

和101&gt; 100,所以它永远不会进入循环。

答案 1 :(得分:3)

这是因为您只要@counter < @numtoinsert插入记录,而@counter为101,它就不会小于@numtoinsert,即100。

答案 2 :(得分:2)

您有两个变量如下:

SET @numtoinsert = 100
SET @counter = 101 

然后insert语句在while循环中:

WHILE @counter < @numtoinsert

计数器开头不大于numtoinsert,因此不执行insert语句。

答案 3 :(得分:1)

你的逻辑错误:

SET @numtoinsert = 100
SET @counter = 101

WHILE @counter < @numtoinsert

你在说:

WHILE 101 IS SMALLER THAN 100

此计算结果为false,因此您永远不会进入while循环。