3

コマンドは正常に実行されましたが、組織テーブルに値が挿入されていないことを示しています。

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

4 に答える 4

9

WHILE条件が次のとおりであるため、何も挿入されません。

WHILE @counter < @numtoinsert 

また、101> 100であるため、ループに入ることがありません。

于 2012-04-16T13:58:44.423 に答える
3

これは、レコードを挿入するのが101である限り、レコード@counter < @numtoinsertが100より小さくなることはないためです。@counter@numtoinsert

于 2012-04-16T14:00:20.290 に答える
2

次の2つの変数があります。

SET @numtoinsert = 100
SET @counter = 101 

その場合、insertステートメントはwhileループ内にあります。

WHILE @counter < @numtoinsert

カウンターは最初はnumtoinsertより大きくないため、挿入ステートメントは実行されません。

于 2012-04-16T14:00:52.427 に答える
1

あなたの論理は正しくありません:

SET @numtoinsert = 100
SET @counter = 101

WHILE @counter < @numtoinsert

あなたが言っています:

WHILE 101 IS SMALLER THAN 100

これはfalseと評価されるため、whileループに入ることがありません。

于 2012-04-16T14:03:56.577 に答える