首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套游标,代码不会在游标外部更新表

嵌套游标,代码不会在游标外部更新表
EN

Stack Overflow用户
提问于 2012-11-02 05:48:33
回答 1查看 319关注 0票数 0

我正在处理这个嵌套的游标。我在major_cursor中的update语句没有更新表。我知道所有的循环都在工作,因为print语句打印expect,但edu_suffix_stage_test中没有任何更新。我希望有人能给我一个建议!

对于每个id,都有一行关于专业的数据,以及获得该学位的年份。我需要把它们串在一起。

例如,REID 10013有两个两个学位的记录:

土木工程在38年,土木工程在41年。

我需要建立的edusuffix,所以它等于“土木工程‘38,土木工程在'41”。我需要每个reid在最后一个edusuffix,在edu_suffix_stage_test。

谢谢。

下面是我的代码:

代码语言:javascript
复制
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 + ', '+@edusuffix_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
EN

回答 1

Stack Overflow用户

发布于 2012-11-03 01:11:33

实际上,游标没有任何问题。我的update语句有错误!我不知道我在想什么,那样比较null是行不通的。我也在编写一个更好的case语句,并将使用isnull()。当我写完的时候我会把它贴出来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13186039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档