Имя столбца или количество предоставленных значений не соответствует определению таблицы на сервере SQL - PullRequest
0 голосов
/ 10 октября 2019

У меня есть следующие сегменты кода курсора 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

Но я получил следующее сообщение об ошибке здесь

'Сообщение 213, уровень 16, состояние 1, строка128
Имя столбца или количество предоставленных значений не соответствует определению таблицы.

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 10 октября 2019

Вы получаете эту ошибку, поскольку число столбцов в таблицах Account_APInvoiceDetail не совпадает с оператором выбора.

При вставке записи следует указать имена столбцов, как показано ниже, и это будет работать.

  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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...