SYBASE游标声明为只读变为不定式

时间:2015-03-25 17:30:49

标签: sybase-ase

有一个简单的光标,有260条记录。在循环内部不仅打印而且更新一些表。不仅有代码,还有解释

/*Declare cursor for read only*/
DECLARE crsr_one CURSOR FOR    
    SELECT a,b,c,d   
    FROM table_name   
    WHERE a>=100       
    for read only 

    OPEN crsr_one          /*open cursor*/    
    DECLARE @a,@b,@c,@d    /*declare loop variables*/ 

    while (1=1)            /*start while loop*/    
    BEGIN    
        FETCH crsr_one into @a,@b,@c,@d    /*fetch into  variable */

        IF (@@sqlstatus = 2)               /*Break if no more records*/
            break
        /*some other code with select and update table*/   
        print "%1! %2! %3! %4!", @a,@b,@c,@d   /*Print variables*/
    END

问题是: 在while循环中,它变为不定式并带来相同的数据。

知道为什么以及如何纠正它?

1 个答案:

答案 0 :(得分:1)

您的代码看起来不错(除了DECLARE的语法无效)。 如果循环没有在@@ sqlstatus = 2上中断,那么显而易见的问题是:它具有 的值是多少?它也可以是'1',表示错误。要查找,请打印该值。 为了完全正确,你也应该测试@@ sqlstatus = 1.最简单的方法是测试@@ sqlstatus!= 0,它包括值1和2.