informix的esql编译参数避免//注释引起的SQL中断问题

发布时间:2020-08-08 17:26:59 作者:pacman2000
来源:ITPUB博客 阅读:185

在EXEC SQL中,如果SQL语句出现了“//”符号,那么会导致后面一直到“;”结尾的SQL语句都被忽略,而不止当前行。这样往往会出乎程序员的意料。

例如以下例子程序t1.ec。


  • int main()
  • {
  •         EXEC SQL UPDATE vyktd
  •         SET kahaoo="1" //注释1出现在SQL中
  •         WHERE kahaoo= "2";
  •         //注释2出现在普通程序中
  •         return 0;
  • }

  • 正常编译可以通过:

    $esql -e t1.ec

    $

    其实执行的SQL将会是UPDATE vyktd SET kahaoo="1",不带任何条件。因为WHERE字句被注释1所掩盖,变成危险的全表更新!


    为了避免这样的隐患,需要加上esql的编译参数-keepccomment,加上这个以后,如果在sql里写了“//”就会编译报错。

    $esql -keepccomment -e t1.ec
    esqlc: "t1.ec", line 4: Error -33051: Syntax error on identifier or symbol '/'.
    1 error(s) found

    $


    推荐阅读:
    1. java怎样避免死锁
    2. 高并发下怎么优化能避免服务器压力过大

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    sql esql informix

    上一篇:Python的MSN开发包 msnp.py

    下一篇:配置HTTPS服务器

    相关阅读

    您好,登录后才能下订单哦!

    密码登录
    登录注册
    其他方式登录
    点击 登录注册 即表示同意《亿速云用户服务条款》