您好我一直在尝试在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,所以我不确定为什么光标没有移动到最后一行
答案 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。