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

标签 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,所以我不确定为什么光标没有移过最后一行

最佳答案

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 .

关于c++ - 为什么我的光标在最后一行无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3200435/

相关文章:

c++ - 删除对象时双重释放或损坏

SQL SELECT 使用 CASE 语句,但有多个条件

c++ - 模板和 ODR

C++ 模板 : typename and function to map to int

sql - oracle 删除查询花费太多时间

c - 我如何在 C 中的字符指针上应用 << 运算符和++ 运算符

c - winapi - 24bpp 中的 CreateDIBitmap 是 BGR 而不是 RGB

c - 添加到链接列表

c++ - C++/编译: is it possible to set the size of the vptr (global vtable + 2 bytes index)

java - 从使用 jdbc 的 java 项目创建 jar