Как исправить Cursorfetch: Количество переменных, объявленных в списке INTO, должно соответствовать количеству выбранных столбцов на сервере SQL - PullRequest
0 голосов
/ 11 октября 2019

У меня есть следующий SQL Server вставка курсора в таблицу с переменной вне курсора выберите следующим образом,

DECLARE @Create_UserId uniqueidentifier,
        @Create_Date datetime,
        @Modification_UserId uniqueidentifier,
        @Modification_Date datetime,

SET @Create_UserId = '535EFDB6-CA05-4DB3-A379-E3D65CF9C08F';
SET @Create_Date = '2017-05-16 08:51:10.080';
SET @Modification_UserId = '535EFDB6-CA05-4DB3-A379-E3D65CF9C08F';
SET @Modification_Date = '2017-06-29 17:06:20.103';

DECLARE insertapiinvoicedetail_cursor CURSOR FOR
select 
CompanyID,APOD_Master_Id,APOD_Project_Id,APOD_Item_Num,APOD_Project_Code, APOD_Item_Id,apod_cost_centre_id
from Account_APOrderDetail aod
where aod.APOD_Master_Id in (
select ref_code
from Account_APOrderMaster
where apo_order_id = 00122975

);
OPEN insertapiinvoicedetail_cursor
FETCH NEXT FROM insertapiinvoicedetail_cursor INTO
....

, но когда я запускаю запрос, я получаю следующую ошибку

Cursorfetch: количество переменных, объявленных в списке INTO, должно соответствовать количеству выбранных столбцов.

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

1 Ответ

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

у вас отсутствуют переменные для вашего курсора.

DECLARE @Create_UserId uniqueidentifier,
        @Create_Date datetime,
        @Modification_UserId uniqueidentifier,
        @Modification_Date datetime,

SET @Create_UserId = '535EFDB6-CA05-4DB3-A379-E3D65CF9C08F';
SET @Create_Date = '2017-05-16 08:51:10.080';
SET @Modification_UserId = '535EFDB6-CA05-4DB3-A379-E3D65CF9C08F';
SET @Modification_Date = '2017-06-29 17:06:20.103';

--variables
DECLARE 
    @CompanyID INT,
    @APOD_Master_Id INT,
    .....

DECLARE insertapiinvoicedetail_cursor CURSOR FOR
    select 
        CompanyID, APOD_Master_Id, APOD_Project_Id, APOD_Item_Num, APOD_Project_Code, APOD_Item_Id, apod_cost_centre_id
    from Account_APOrderDetail aod
    where aod.APOD_Master_Id in (
        select ref_code
        from Account_APOrderMaster
        where apo_order_id = 00122975
    )
OPEN insertapiinvoicedetail_cursor
FETCH NEXT FROM insertapiinvoicedetail_cursor INTO @CompanyID, @APOD_Master_Id...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...