2017-09-04 22 views
1

Insertステートメントが機能しないという問題があります。私は一時テーブルを作成し、次にこのtempテーブルの2つのカラムに基づいてinsert文が動作しています。カーソルで挿入が機能しない

データは一時テーブルに存在しますが、挿入がエラーなしで機能していません。事前に感謝します

DECLARE JPCUSTOMER_CURSOR CURSOR FOR 
    SELECT 
     cu.CustomerNo, jp.ID 
    FROM 
     CUSTOMERNO# cu, SalesmanNo# sa, JourneyPlan JP 
    WHERE 
     cu.OCCURRENCE = sa.OCCURRENCE 
     AND jp.AssignedTO = sa.SalesmanNo 

OPEN JPCUSTOMER_CURSOR 

FETCH NEXT FROM JPCUSTOMER_CURSOR INTO @CUST_ID,@JP_ID 

WHILE (@@FETCH_STATUS = 0) 
BEGIN 
    INSERT INTO [JPCustomer] ([CustomerID ], [JPID], [Frequency], [StartWeek], 
           [sat], [sun], [mon], [tue], [wed], [thu], [fri], 
           [VisitOrder], [ModifiedOn], [ModifiedBy], 
           [CreatedOn], [Createdby], 
           [RecordSource], [IsPotential]) 
    VALUES (@CUST_ID, @JP_ID, 4, 1, 
      1, 1, 1, 1, 1, 1, 1, 
      NULL, NULL, NULL, 
      NULL, NULL, 0, 0) 
END 

CLOSE JPCUSTOMER_CURSOR; 
DEALLOCATE JPCUSTOMER_CURSOR; 
+1

'INSERT'の後に' FETCH NEXT'がありません。カーソルクエリによって少なくとも1つの行が返された場合は、このコードで無限ループが発生することが予想されます。 –

+3

あなたは '@ CUST_ID'と' @ JP_ID'を宣言したことのあるカーソルは必要ありません。 –

+0

?これは同じ行を複数回挿入するだけで、末尾に 'fetch next'を追加する必要があります – dbajtr

答えて

2

あなたは何をしているのためのカーソルは必要ありません。

INSERT INTO [JPCustomer] ([CustomerID ], 
          [JPID], 
          [Frequency], 
          [StartWeek], 
          [sat], 
          [sun], 
          [mon], 
          [tue], 
          [wed], 
          [thu], 
          [fri], 
          [VisitOrder], 
          [ModifiedOn], 
          [ModifiedBy], 
          [CreatedOn], 
          [Createdby], 
          [RecordSource], 
          [IsPotential]) 
select cu.CustomerNo, 
     jp.ID, 
     4, 
     1, 
     1, 
     1, 
     1, 
     1, 
     1, 
     1, 
     1, 
     NULL, 
     NULL, 
     NULL, 
     NULL, 
     NULL, 
     0, 
     0 
from CUSTOMERNO# cu 
join SalesmanNo# sa on cu.OCCURRENCE = sa.OCCURRENCE 
join JourneyPlan JP on jp.AssignedTO = sa.SalesmanNo 
1

あなたは必要ありませんし、このためにカーソルを使用しないでください。これは、はるかに高速になります。ちょうどINSERT ... SELECT。 EG

with q as 
(
    select cu.CustomerID CUST_ID, jp.ID JPID 
    from CUSTOMERNO# cu 
    join SalesmanNo# sa 
     on cu.OCCURRENCE = sa.OCCURRENCE 
    join JourneyPlan JP 
     on jp.AssignedTO = sa.SalesmanNo 

) 
INSERT INTO [JPCustomer] ([CustomerID], 
          [JPID], 
          [Frequency], 
          [StartWeek], 
          [sat], 
          [sun], 
          [mon], 
          [tue], 
          [wed], 
          [thu], 
          [fri], 
          [VisitOrder], 
          [ModifiedOn], 
          [ModifiedBy], 
          [CreatedOn], 
          [Createdby], 
          [RecordSource], 
          [IsPotential]) 
SELECT CustomerID, 
     JPID, 
     4, 
     1, 
     1, 
     1, 
     1, 
     1, 
     1, 
     1, 
     1, 
     NULL, 
     NULL, 
     NULL, 
     NULL, 
     NULL, 
     0, 
     0 
from q; 
関連する問題