DECLARE  @Grade     varchar(10)
DECLARE  @TeachingPoint   varchar(10)
DECLARE  @Level   varchar(10)
DECLARE  @LearningFormat  varchar(10)
DECLARE  @Professional   varchar(10)
DECLARE  @Class   varchar(10)
/*面是声明临时变量*/
DECLARE  @TGrade     varchar(10)
DECLARE  @TTeachingPoint   varchar(10)
DECLARE  @TLevel   varchar(10)
DECLARE  @TLearningFormat  varchar(10)
DECLARE  @TProfessional   varchar(10)
DECLARE  @TClass   varchar(10)
/*声明一个游标*/
DECLARE TempSutdents_Symbol CURSOR SCROLL
FOR SELECT Grade,TeachingPoint,[Level],LearningFormat,Professional,Class FROM TempStudents
OPEN TempSutdents_Symbol
FETCH FIRST FROM TempSutdents_Symbol INTO
@Grade,
@TeachingPoint,
@Level,
@LearningFormat,
@Professional,
@Class
WHILE( @@FETCH_STATUS = 0)
BEGIN
SELECT @TGrade=Value FROM Dictionary Where [Name]=@Grade
SELECT @TTeachingPoint=Value FROM Dictionary Where [Name]=@TeachingPoint
SELECT @TLevel=Value FROM Dictionary Where [Name]=@Level
SELECT @TLearningFormat=Value FROM Dictionary Where [Name]=@LearningFormat
SELECT @TProfessional=Value FROM Dictionary Where [Name]=@Professional
SELECT @TClass=Value FROM Dictionary Where [Name]=@Class
/*产生一个新的Number*/
UPDATE TempStudents SET  Number=RTRIM(@TGrade)+RTRIM(@TTeachingPoint)+RTRIM(@TLevel)+RTRIM(@TlearningFormat)+RTRIM(@TProfessional)+RTRIM(@TClass)
WHERE CURRENT OF TempSutdents_Symbol
FETCH NEXT FROM TempSutdents_Symbol INTO
@Grade,
@TeachingPoint,
@Level,
@LearningFormat,
@Professional,
@Class
END
/*关闭游标*/
CLOSE TempSutdents_Symbol
DEALLOCATE TempSutdents_Symbol
未什么在生成新的Number后,表Number列的第一行数据为空呢?搞不懂为什么游标没有操作第一行数据
而且第二行以后都有新的数据?
谢谢帮忙解决啊,急!

解决方案 »

  1.   

    tryDECLARE  @Grade     varchar(10)
    DECLARE  @TeachingPoint   varchar(10)
    DECLARE  @Level   varchar(10)
    DECLARE  @LearningFormat  varchar(10)
    DECLARE  @Professional   varchar(10)
    DECLARE  @Class   varchar(10)
    /*面是声明临时变量*/
    DECLARE  @TGrade     varchar(10)
    DECLARE  @TTeachingPoint   varchar(10)
    DECLARE  @TLevel   varchar(10)
    DECLARE  @TLearningFormat  varchar(10)
    DECLARE  @TProfessional   varchar(10)
    DECLARE  @TClass   varchar(10)
    /*声明一个游标*/
    DECLARE TempSutdents_Symbol CURSOR
    FOR SELECT Grade,TeachingPoint,[Level],LearningFormat,Professional,Class FROM TempStudents
    OPEN TempSutdents_Symbol
    FETCH NEXT FROM TempSutdents_Symbol INTO
    @Grade,
    @TeachingPoint,
    @Level,
    @LearningFormat,
    @Professional,
    @Class
    WHILE( @@FETCH_STATUS = 0)
    BEGIN
    SELECT @TGrade=Value FROM Dictionary Where [Name]=@Grade
    SELECT @TTeachingPoint=Value FROM Dictionary Where [Name]=@TeachingPoint
    SELECT @TLevel=Value FROM Dictionary Where [Name]=@Level
    SELECT @TLearningFormat=Value FROM Dictionary Where [Name]=@LearningFormat
    SELECT @TProfessional=Value FROM Dictionary Where [Name]=@Professional
    SELECT @TClass=Value FROM Dictionary Where [Name]=@Class
    /*产生一个新的Number*/
    UPDATE TempStudents SET  Number=RTRIM(@TGrade)+RTRIM(@TTeachingPoint)+RTRIM(@TLevel)+RTRIM(@TlearningFormat)+RTRIM(@TProfessional)+RTRIM(@TClass)
    WHERE CURRENT OF TempSutdents_Symbol
    FETCH NEXT FROM TempSutdents_Symbol INTO
    @Grade,
    @TeachingPoint,
    @Level,
    @LearningFormat,
    @Professional,
    @Class
    END
    /*关闭游标*/
    CLOSE TempSutdents_Symbol
    DEALLOCATE TempSutdents_Symbol
      

  2.   

    楼上能说明一下错在哪里吗?
    TRY
    Go
    我这里有的,
      

  3.   

    FETCH FIRST FROM TempSutdents_Symbol INTO>>FETCH next FROM TempSutdents_Symbol INTO
      

  4.   

    /*声明一个游标*/
    DECLARE TempSutdents_Symbol CURSOR SCROLL
    FOR SELECT Grade,TeachingPoint,[Level],LearningFormat,Professional,Class FROM TempStudents
    OPEN TempSutdents_Symbol
    FETCH FIRST FROM TempSutdents_Symbol INTO
    --------------------------------------------
    把FETCH FIRST FROM TempSutdents_Symbol INTO  变成FETCH next FROM TempSutdents_Symbol INTO
      

  5.   

    FETCH FIRST FROM TempSutdents_Symbol INTO
    --改成
    FETCH next FROM TempSutdents_Symbol INTO就是那个first应该改成next啦 :)
      

  6.   

    first改next有什么关系?有没可能数据问题啊
      

  7.   

    UPDATE TempStudents SET  Number=RTRIM(@TGrade)+RTRIM(@TTeachingPoint)+RTRIM(@TLevel)+RTRIM(@TlearningFormat)+RTRIM(@TProfessional)+RTRIM(@TClass)
    WHERE CURRENT OF TempSutdents_Symbol
    你这么多rtrim,有没有可能哪个变量值为null如果是这样,那你就把第一行更新为null了