免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3183 | 回复: 7
打印 上一主题 下一主题

精通proc与esqlc的高人请进 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-19 14:06 |只看该作者 |倒序浏览
EXEC SQL WHENEVER NOT FOUND DO break;


请问这个在ec中用什么代替?

论坛徽章:
0
2 [报告]
发表于 2007-09-19 14:14 |只看该作者
EXEC SQL WHENEVER NOT FOUND STOP; ????

论坛徽章:
0
3 [报告]
发表于 2007-09-19 14:16 |只看该作者
STOP 程序就跳出去不执行了 我只是想跳出循环 好像informix没有break这东西

论坛徽章:
0
4 [报告]
发表于 2007-09-19 14:36 |只看该作者
是不是可以

int
__xxx_xxx_my_break()
{
   
}

#define __xxx_xxx_my_break()  break
exec sql whenever not found call __xxx_xxx_my_break;
...

没事测试过,不知道是不是可行

论坛徽章:
0
5 [报告]
发表于 2007-09-19 14:47 |只看该作者
不行.

用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; }

论坛徽章:
0
6 [报告]
发表于 2007-09-19 14:54 |只看该作者
不用这个了,用别的办法.

Thanks for ivhb!

论坛徽章:
0
7 [报告]
发表于 2007-09-19 14:58 |只看该作者
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,因此不会破坏程序逻辑。只是太罗嗦了。
要是程序很多,就麻烦了。

论坛徽章:
0
8 [报告]
发表于 2007-09-25 06:27 |只看该作者
这个是存储过程中的用法,在ec中不能直接使用
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP