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

Я собираюсь назначить некоторые значения параметров в курсоре в SQL Server, например:

DECLARE insertapiinvoicedetail_cursor CURSOR FOR
    SELECT
        @CompanyID = CompanyID,
        @APID_Master_Id = APOD_Master_Id,
        @APID_Project_Id = APOD_Project_Id,
        @APID_Item_Num = APOD_Item_Num,
        @APID_Project_Code = APOD_Project_Code,
        @APID_Item_Id = APOD_Item_Id,
        @apid_cost_centre_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);

Но при выполнении запроса я получаю это сообщение об ошибке

Сообщение 154, Уровень 15, Состояние 3, Строка 110
Назначение переменной не разрешено в объявлении курсора.

Как это исправить?

изменить вопрос

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

.....

1 Ответ

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

Вы должны выполнить назначение в Fetch Into части курсора

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, @APID_Master_Id, @APID_Project_Id, @APID_Item_Num, 
          @APID_Project_Code, @APID_Item_Id, @apid_cost_centre_id

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