温馨提示×

温馨提示×

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

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》
  • 首页 > 
  • 教程 > 
  • 数据库 > 
  • informix的esql编译参数避免//注释引起的SQL中断问题

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

发布时间:2020-08-08 17:26:59 来源:ITPUB博客 阅读:159 作者:pacman2000 栏目:数据库

在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

    $


    向AI问一下细节

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

    AI