2016-01-28 2 views
0

Ниже приводится часть хранимой процедуры я работаю (фрагмент кода может быть выполнена), который возвращает ошибкуОшибка SQL-Сервер нескольких частей Идентификатор .. не может быть связан

мульти- идентификатор части «CountCursor.ID» не может быть привязан.

Но почему?

DECLARE @MANTECCount int 
DECLARE @ThirdPartyCount int 
DECLARE @MemberNo nchar(4) 

SET @MANTECCount = 0 
SET @ThirdPartyCount = 0 
SET @MemberNo = NULL 

DECLARE CountCursor CURSOR FOR 
SELECT ID 
FROM CIF 

OPEN CountCursor 
FETCH NEXT FROM CountCursor 

WHILE @@FETCH_STATUS = 0 
BEGIN 

SET @MemberNo = CountCursor.ID 


FETCH NEXT FROM CountCursor; 
END; 
CLOSE CountCursor; 
DEALLOCATE CountCursor; 
+0

Отсутствует часть хранимой процедуры –

+0

Вы слышали о «в» части инструкции 'fetch'? –

ответ

3

Вам необходимо присвоить значение сгружен из Cursor (CountCursor) в переменную, чтобы использовать его внутри курсора. Более подробную информацию о Cursor можно найти here

Declare @id int 
...... 
FETCH NEXT FROM CountCursor into @id 

WHILE @@FETCH_STATUS = 0 
BEGIN 

SET @MemberNo = @id 
FETCH NEXT FROM CountCursor into @id; 
END; 
.... 

Примечание: курсора может иметь ужасные производительность. Если вы добавите исходный код, мы можем попробовать и изменить его на SET Based Approach.

2

Вам нужно получить значение во что-то. Сначала мне было интересно о структуре кода, затем я понял, что Python (и, возможно, другие языки) обрабатывают курсоры одинаково.

В любом случае, вы можете поместить значение непосредственно в @MemberNo:

DECLARE @MANTECCount int; 
DECLARE @ThirdPartyCount int; 
DECLARE @MemberNo nchar(4); 

SET @MANTECCount = 0; 
SET @ThirdPartyCount = 0; 
SET @MemberNo = NULL; 

DECLARE CountCursor CURSOR FOR 
    SELECT ID 
    FROM CIF; 

OPEN CountCursor; 

FETCH NEXT FROM CountCursor INTO @MemberNo; 

WHILE @@FETCH_STATUS = 0 
BEGIN 
    FETCH NEXT FROM CountCursor INTO @MemberNo; 
END; 

CLOSE CountCursor; 
DEALLOCATE CountCursor; 

GO 

Я не уверен, что код должен делать. Предположительно, у вас есть более интересный код, чем этот.

Смежные вопросы