本帖最后由 zyaim 于 2014-06-23 09:52:46 编辑

解决方案 »

  1.   

    --自己创意 
     DECLARE TempCursor CURSOR FOR --下面的变量你放到什么位置申明
     SELECT @FTrigFlag=FCheck1,@FProdOrderGUID=FProdOrderGUID,@FNumber=ISNULL(FNumber,0) FROM table1                                           
     FOR READ ONLY
    OPEN TempCursor
    FETCH NEXT FROM TempCursor
    WHILE @@FETCH_STATUS=0
    BEGIN
    --……
    END
      

  2.   

    在这个之前,那把变量申明写完整看看,我看你写在什么位置
    --自己创意 
                DECLARE @FTrigFlag BIT
                DECLARE @FProdOrderGUID VARCHAR(50)
                DECLARE @FNumber FLOAT         DECLARE TempCursor CURSOR FOR 
     SELECT @FTrigFlag=FCheck1,@FProdOrderGUID=FProdOrderGUID,@FNumber=ISNULL(FNumber,0) FROM table1
     FOR READ ONLY
    OPEN TempCursor
    FETCH NEXT FROM TempCursor
    WHILE @@FETCH_STATUS=0
    BEGIN
    --……
    END
      

  3.   

    在这个之前,那把变量申明写完整看看,我看你写在什么位置
    --自己创意 
                DECLARE @FTrigFlag BIT
                DECLARE @FProdOrderGUID VARCHAR(50)
                DECLARE @FNumber FLOAT         DECLARE TempCursor CURSOR FOR 
     SELECT @FTrigFlag=FCheck1,@FProdOrderGUID=FProdOrderGUID,@FNumber=ISNULL(FNumber,0) FROM table1
     FOR READ ONLY
    OPEN TempCursor
    FETCH NEXT FROM TempCursor
    WHILE @@FETCH_STATUS=0
    BEGIN
    --……
    END这样不行的,必须放到游标循环的里面才可以
      

  4.   

    这样不行的,必须放到游标循环的里面才可以
    经实测,确实不行,连语法检查都不能通过。
    那我想请问,有没有办法不要用FETCH NEXT FROM TempCursor INTO @FTrigFlag,@FProdOrderGUID,@FNumber这种文学式的赋值方法,这种按变量的排列顺序去赋值,变量名一多,就眼花了,那种直接用等号赋值的办法比较清晰。
      

  5.   

    经实测,确实不行,连语法检查都不能通过。
    那我想请问,有没有办法不要用FETCH NEXT FROM TempCursor INTO @FTrigFlag,@FProdOrderGUID,@FNumber这种文学式的赋值方法,这种按变量的排列顺序去赋值,变量名一多,就眼花了,那种直接用等号赋值的办法比较清晰。
      

  6.   

    经实测,确实不行,连语法检查都不能通过。
    那我想请问,有没有办法不要用FETCH NEXT FROM TempCursor INTO @FTrigFlag,@FProdOrderGUID,@FNumber这种文学式的赋值方法,这种按变量的排列顺序去赋值,变量名一多,就眼花了,那种直接用等号赋值的办法比较清晰。有良好的编程习惯,其实常规写法是比较规范的。因为你在定义游标赋值的时候,是写出了所有的列名,那么在循环取游标的数据时,一一对应的将列写入变量是没问题的。你那种创新的写法行不通,是因为在定义游标的同时会赋值,你此时再给变量赋值就会出问题的当然了,也很肯定你这种深究的态度。你这种创新的想法很不错,虽然不成功。说明你很有心