精通proc与esqlc的高人请进
EXEC SQL WHENEVER NOT FOUND DO break;请问这个在ec中用什么代替? EXEC SQL WHENEVER NOT FOUND STOP; ???? STOP 程序就跳出去不执行了 我只是想跳出循环 好像informix没有break这东西 是不是可以
int
__xxx_xxx_my_break()
{
}
#define __xxx_xxx_my_break()break
exec sql whenever not found call __xxx_xxx_my_break;
...
没事测试过,不知道是不是可行 不行. :em06:
用goto也编不过去.
EXEC SQL WHENEVER NOT FOUND goto breakout;
while(1)
{
.......................
}
breakout:
EXEC SQL CLOSE cur_ok;
报这样的错:
Error 327: "Colconv.ec", line 3965 # The goto statement specified a
nonexistent label as its destination.
{ if (SQLCODE == SQLNOTFOUND) goto breakout; }
^^^^^^^^^^^^^^
Error 327: "Colconv.ec", line 4016 # The goto statement specified a
nonexistent label as its destination.
{ if (SQLCODE == SQLNOTFOUND) goto breakout; } 不用这个了,用别的办法.
Thanks for ivhb! informix会把所有的exec sql开头的文句都在其后加上
if (SQLCODE == SQLNOTFOUND)
....
这样,如果仅仅是要加上break,不在while,for里面是没有办法做到的。
这样,如果你把每个不是在循环里面的语句。都用
do {
exec sql declare a_cur cursor for ...
exec sql open a_cur;
} while (0);
实际上这些语句永远都不会返回SQLNOTFOUND,因此不会破坏程序逻辑。只是太罗嗦了。
要是程序很多,就麻烦了。 这个是存储过程中的用法,在ec中不能直接使用
页:
[1]