为什么我的光标在最后一行无限循环

时间:2010-07-08 03:03:48

标签: c++ sql c

您好我一直在尝试在c中使用带有嵌入式sql的游标,但我似乎无法让它停止读取我表中的最后一行。该表称为发布,具有两个属性pubid和title。我只是希望我的光标迭代并显示pubid。 这就是我所拥有的:

    EXEC SQL DECLARE C1 CURSOR FOR SELECT pubid FROM publication;
    EXEC SQL OPEN C1;
    while(SQLCODE !=100){
        EXEC SQL FETCH C1 INTO :pubid; //a host variable that was declared earlier
        cout<<pubid<<endl;
    }

当我跑步时,它显示所有行并显示最后一行的无限重复。我也尝试显示SQLCODE并保持为0,所以我不确定为什么光标没有移动到最后一行

1 个答案:

答案 0 :(得分:1)

EXEC SQL DECLARE C1 CURSOR FOR SELECT pubid FROM publication;
EXEC SQL OPEN C1;
EXEC SQL WHENEVER NOT FOUND GOTO close_c1;
while(SQLCODE !=100) {
    EXEC SQL FETCH C1 INTO :pubid;
    cout<<pubid<<endl;
}
close_c1:
EXEC SQL CLOSE C1;

这样的事情应该有效。另外,请考虑使用EXEC SQL WHENEVER SQLERROR clean_up_function;打印出诊断信息。我找到了参考here