游标提取 在 INTO 列表中声明的变量数必须与所选列的变量数匹配

  • 本文关键字:变量 列表 声明 提取 游标 INTO c# sql
  • 更新时间 :
  • 英文 :


我已经检查了好几次。列计数匹配,但我不断收到错误,说提取到语句与计数不匹配,

 CREATE PROCEDURE [dbo].[SPXMLCSA]  
    (  
     @CounterStockMaster text,   
     @CounterStockDetails  text  
    )  
    AS  
    DECLARE @M0 VARCHAR(100) --EditStatus    
    DECLARE @M1 VARCHAR(100) --Counter_Code
    DECLARE @M2 VARCHAR(100) --Counter_Name 
    DECLARE @M3 VARCHAR(100) --To Branch_Code  

    DECLARE @D1 VARCHAR(100)  --Project Type  
    DECLARE @D2 VARCHAR(100)  --drpConter.Text  
    DECLARE @D3 VARCHAR(100)  --grdGO.Rows[i].Cells["ItemCode"].Value  
    DECLARE @D4 VARCHAR(100)  --grdGO.Rows[i].Cells["Qty"].Value  
    DECLARE @D5 VARCHAR(100) --Counter_Stock_Date 
    DECLARE @UomCode varchar(100)    --     UOM CODE                       
    DECLARE @NoOfUnits varchar(100)    --     NO OF UINTS      
    DECLARE @UomSrate varchar(100)    --     UOM PRATE                           
    DECLARE @UomName varchar(100)    --     UOM NAME         
    DECLARE @UomQty varchar(100)    --     UOM QUANTITY 
    BEGIN  
     DECLARE @CNTNo int  
     DECLARE @idoc int  
     DECLARE @INDate Datetime  
     DECLARE @Branch_Code NUMERIC(18,0)  
     DECLARE @ItemCode  NUMERIC(18,0)  
     DECLARE @ItemQty  NUMERIC(18,3)  
     DECLARE @PurRate NUMERIC(18,2)  
     DECLARE @SaleRate NUMERIC(18,2)  
     DECLARE @MRP NUMERIC(18,2)  
     DECLARE @PurDate DATETIME  
     DECLARE @Batch_No VARCHAR(50)  
     DECLARE @ExpiryDate DATETIME  
     DECLARE @MultiMRP BIT   
     BEGIN TRANSACTION   
      SET DATEFORMAT dmy  
      SET @MultiMRP = (Select ISNULL(Multiple_Mrp,0) from [Company])  
    --===================================================================================================================  
    --@GOMaster  
    --===================================================================================================================  
    EXEC sp_xml_preparedocument @idoc OUTPUT, @CounterStockMaster  
    DECLARE GINMasterCursor CURSOR FOR  
     SELECT * FROM OPENXML (@idoc, '/CSMASTER/ID',1)  
     WITH (M0 VARCHAR(100), M1 VARCHAR(100), M2 VARCHAR(100),M3 VARCHAR(100))  
    OPEN GINMasterCursor  
    FETCH NEXT FROM GINMasterCursor INTO @M0,@M1,@M2,@M3
     IF @M0='T'  ---Edit Mode TRUE   
      BEGIN  --- Reversing the Item Stock for the Editing Sales START  
       SET @CNTNo = @M1  

       DECLARE GInDetailCursor CURSOR FOR  
       SELECT Counter_Stock_Code,Item_Code,Item_Qty,Branch_Code From [Counter Stock Details]
        WHERE Counter_Stock_Code = @CNTNo AND Branch_Code=@M3 
       OPEN GInDetailCursor  
       FETCH NEXT FROM GInDetailCursor INTO @CNTNo,@ItemCode,@ItemQty,@Branch_Code  
       WHILE @@FETCH_STATUS=0  
       BEGIN  
        IF @MultiMRP = 0  
         UPDATE [ITEM MASTER] SET ITEM_BAL = ITEM_BAL - @ItemQty , Transfer_flag=2, Ascend_flag=1 WHERE Item_Code = @ItemCode and Type_Code = 0 and Branch_Code = @M3  
        ELSE  
         UPDATE [ITEM MASTER] SET ITEM_BAL = ITEM_BAL - @ItemQty , Transfer_flag=2, Ascend_flag=1 WHERE Item_Code = @ItemCode and Item_MRP = @MRP and Type_Code = 0 and Branch_Code = @M3  
        FETCH NEXT FROM GInDetailCursor INTO @CNTNo,@ItemCode,@ItemQty,@PurRate,@SaleRate,@MRP,@PurDate,@Branch_Code,@Batch_No,@ExpiryDate  
       END   
       CLOSE GInDetailCursor  
       DEALLOCATE GInDetailCursor  

       DELETE [Counter Stock Master] WHERE Counter_Stock_Code=@CNTNo 
       DELETE [Counter Stock Details] WHERE Counter_Stock_Code=@CNTNo  

      END  --- Reversing the Item Stock for the Editing GO END  
     ELSE  
     BEGIN  
      SET @CNTNo = (SELECT ISNULL(MAX(Counter_Stock_Code)+1,1) FROM  [Counter Stock Master] where Branch_Code = @M3)  
     END  
     INSERT INTO [Counter Stock Master]   
     (Counter_Stock_Code,Counter_Stock_Date,Branch_Code)  
     VALUES   
      (@CNTNo, @D5, @M3)  
    CLOSE GINMasterCursor  
    DEALLOCATE GINMasterCursor  
    EXEC sp_xml_removedocument @idoc  
    -- Create an internal representation of the XML document.  
    EXEC sp_xml_preparedocument @idoc OUTPUT, @CounterStockDetails  
    -- Execute a SELECT statement using OPENXML rowset provider.  
    DECLARE GInDetailsCursor CURSOR FOR  
     SELECT * FROM OPENXML (@idoc, '/CSDETAILS/ID',1)  
     WITH ( D1 VARCHAR(100), D2 VARCHAR(100), D3 VARCHAR(100), D4 VARCHAR(100))    
    OPEN GInDetailsCursor  
    FETCH NEXT FROM GInDetailsCursor INTO @D1,@D2,@D3,@D4
    WHILE @@FETCH_STATUS = 0  
    BEGIN  
     IF @D1='A' or @D1='D'  --For ProjectType ==> Departmental Stores  
     BEGIN   
      INSERT INTO [Counter Stock Details]   
       (Counter_Stock_Code,Item_Code,Item_Qty,Branch_Code)  
      VALUES   
       (@D2, @D3, @D4, @M3)   
      IF @MultiMRP = 0  
       UPDATE [ITEM MASTER] SET ITEM_BAL = ITEM_BAL + @D4 , Transfer_flag=2, Ascend_flag=1 WHERE Item_Code = @D3 and Type_Code = 0 and Branch_Code = @M3  
      ELSE  
       UPDATE [ITEM MASTER] SET ITEM_BAL = ITEM_BAL + @D4 , Transfer_flag=2, Ascend_flag=1 WHERE Item_Code = @D3 and Type_Code = 0 and Branch_Code = @M3  
     END  
    FETCH NEXT FROM GInDetailsCursor INTO @D1,@D2,@D3,@D4
    END  
    CLOSE GInDetailsCursor  
    DEALLOCATE GInDetailsCursor  
    EXEC sp_xml_removedocument @idoc  
    SELECT @CNTNo  
    COMMIT TRANSACTION  
    END
    GO

错误:游标提取:INTO列表中声明的变量数必须与所选列的变量数匹配。

从 GInDetailCursor 获取的第二个似乎与游标定义不匹配。

FETCH NEXT FROM GInDetailCursor INTO @CNTNo,@ItemCode,@ItemQty,@PurRate,@SaleRate,@MRP,@PurDate,@Branch_Code,@Batch_No,@ExpiryDate  

最新更新