이 중첩 커서로 작업하고 있습니다. major_cursor의 내 update 문이 테이블을 업데이트하지 않습니다. print 문이 예상했던대로 인쇄하기 때문에 모든 루핑이 작동하고 있지만 edu_suffix_stage_test에서는 업데이트되는 것이 없습니다. 나는 어떤 사람이 제안을하기를 바라고있다.중첩 커서, 코드는 커서 외부의 테이블을 업데이트하지 않습니다.
각 ID에는 전공에 대한 데이터 행이 있고 그 학위가 획득 된 연도가 있습니다. 나는 그들을 함께 끈으로 묶을 필요가있다.
'38, 에서 토목 공학 및 '41에서 토목 공학 : 예를 들어, REID의 10013에 대한
는 2 개도에 대한 두 개의 레코드가 있습니다.
edusuffix를 빌드해야 'Civil Engineering'38,'41 '의 토목 엔지니어링과 같아야합니다. edu_suffix_stage_test에서 리드마다 하나의 edusuffix가 필요합니다.
감사합니다. 실제로 커서 아무 문제가 없다
DECLARE @reid_outside nvarchar(20), @major nvarchar(50), @classof nvarchar(5),
@edusuffix_inside varchar(80), @note nvarchar(50), @reid_inside nvarchar(20),
@edusuffix_outside varchar(80)
DECLARE education_cursor CURSOR FOR
SELECT reid, edusuffix
FROM edu_suffix_stage_test
where reid < 1005
--ORDER BY reid
OPEN education_cursor
FETCH NEXT FROM education_cursor
INTO @reid_outside, @edusuffix_outside
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @note = 'building edusuffix for '
PRINT @note
PRINT @reid_outside
-- Declare an inner cursor based
-- on reid from the outer cursor.
DECLARE major_cursor CURSOR FOR
SELECT v.reid,
v.EduMajor, v.EduClassOF
FROM re_education v
WHERE v.REID = @reid_outside -- Variable value from the outer cursor
--order by v.REID
FOR UPDATE of edusuffix
OPEN major_cursor
FETCH NEXT FROM major_cursor INTO @reid_inside, @major, @classof
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @edusuffix_inside = @major +' '+ @classof +', '
PRINT @edusuffix_inside
update edu_suffix_stage_test
set edusuffix = case when @edusuffix_outside = null then ''+ @edusuffix_inside
else @edusuffix_outside + ', '[email protected]_inside end
from edu_suffix_stage_test a
where -- a.reid = @reid_inside
current of education_cursor
Print ' updated edusuffix'
FETCH NEXT FROM major_cursor INTO @reid_inside, @major, @classof
END
CLOSE major_cursor
DEALLOCATE major_cursor
FETCH NEXT FROM education_cursor
INTO @reid_outside, @edusuffix_outside
END
CLOSE education_cursor
DEALLOCATE education_cursor
나는 업데이트 할 수있는 커서를 사용한 적이 없기 때문에 잘못된 것일 수 있습니다.하지만 'FORUSED EDUSFIX'가 첫 번째 (바깥 쪽) 커서의 일부가 아니어야합니까? 또한 내부 루프 ('major_cursor' 루프)에서'edu_suffix_stage_test'를 갱신하고 있습니다. 이것은 같은 edu_suffix_stage_test 행을 두 번 이상 업데이트 할 수 있음을 의미합니다 (조건은'current of education_cursor'와'education_cursor '내부 루프에있는 동안 움직이지 않는다.) - 의도적으로 설계된 것인가? –