.ec开发中的1213错

发布于 2022-06-26 06:47:28 字数 1646 浏览 490 评论 1

有两套开发环境A、B,操作系统都是HP-UX,数据库为Informix Dynamic Server 2000。在环境A有一个.ec程序,有如下的sql语句:
   EXEC SQL DECLARE TranBill_cur cursor for
      select * from b2b_blotter
      where acc_counter2 in ( select bran_code from com_branch
            group by bran_code )
            and valid_flag = 0
            and disposal_mode = 0
            and acct_date = :trans_date
      order by acc_counter2, trans_date, voucher_no;
   其中,valid_flag、disposal_mode字段类型都是char(1)。
   在环境A中运行程序,没有问题。
   将程序(包括源程序、Makefile、相关的库文件等)拷贝到环境B,编译运行时报错-1213(A character to numeric conversion process failed.),将sql语句修改为:
   EXEC SQL DECLARE TranBill_cur cursor for
      select * from b2b_blotter
      where acc_counter2 in ( select bran_code from com_branch
            group by bran_code )
            and valid_flag = '0'
            and disposal_mode = '0'
            and acct_date = :trans_date
      order by acc_counter2, trans_date, voucher_no;
   编译后运行正常。
   
   在.ec程序的sql语句中,char()类型字段作查询条件时,什么情况下必须要加引号,什么情况下又可以不加呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

德意的啸 2022-06-27 09:49:57

当表中b2b_blotter中,valid_flag或disposal_mode包含了非0-9字符的记录时,不加引号会导致转换错误;
建议:尽可能减少由数据库根据字段类型和用户所赋的值进行动态转换的开销;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文