【问题标题】:Column name or number of supplied values does not match table definition in sql server列名或提供的值的数量与 sql server 中的表定义不匹配
【发布时间】:2020-02-07 13:55:14
【问题描述】:

我有以下 SQL Server 游标代码段来插入数据

     -- declare a cursor 
        DECLARE insertapiinvoicedetail_cursor CURSOR FOR

        SELECT * FROM Account_APOrderDetail WHERE APOD_Master_Id = @var2;

        -- open cursor and fetch first row into variables
        OPEN insertapiinvoicedetail_cursor
        FETCH NEXT FROM insertapiinvoicedetail_cursor INTO
          @Ref_Code,
          @Create_UserId,
          @Create_Date,
          @Modification_UserId,
          @Modification_Date,
          @CompanyId  

        -- check for a new row
          WHILE @@FETCH_STATUS=0
          BEGIN

        -- do complex operation here
          INSERT INTO Account_APInvoiceDetail
          SELECT @Ref_Code,
          @Create_UserId,
          @Create_Date,
          @Modification_UserId,
          @Modification_Date,
          @CompanyId

        -- get next available row into variables
        FETCH NEXT FROM insertapiinvoicedetail_cursor INTO @Ref_Code,
          @Create_UserId,
          @Create_Date,
          @Modification_UserId,
          @Modification_Date,
          @CompanyId

        END
        close insertapiinvoicedetail_cursor
        Deallocate insertapiinvoicedetail_cursor
        GO

但我在这里收到以下错误消息

'Msg 213, Level 16, State 1, Line 128
列名或提供的值的数量与表定义不匹配。

我该如何解决这个问题?

【问题讨论】:

  • 不知道如何解决这个问题?
  • 在插入语句中提供列名
  • INSERT INTO Account_APInvoiceDetail之后提供列名

标签: sql sql-server


【解决方案1】:

您收到此错误是因为 Account_AInvoiceDetail 表中的列数与 select 语句不匹配。

您应该在插入记录时指定列名,如下所示,它将起作用。

  INSERT INTO Account_APInvoiceDetail
(Ref_CodeColumnName, Create_UserIdColumnName, Create_DateColumnName, Modification_UserIdColumnName, Modification_DateColumnName, CompanyIdColumnName)
          SELECT @Ref_Code,
          @Create_UserId,
          @Create_Date,
          @Modification_UserId,
          @Modification_Date,
          @CompanyId

        -- get next available row into variables
        FETCH NEXT FROM insertapiinvoicedetail_cursor INTO @Ref_Code,
          @Create_UserId,
          @Create_Date,
          @Modification_UserId,
          @Modification_Date,
          @CompanyId

注意:提供实际的列名,而不是 Ref_CodeColumnName、Create_UserIdColumnName、Create_DateColumnName、Modification_UserIdColumnName、Modification_DateColumnName、CompanyIdColumnName

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多