你好,我一直在尝试在 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/