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

在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

    $


    名称栏目:informix的esql编译参数避免//注释引起的SQL中断问题
    本文网址:http://azwzsj.com/article/ispcjj.html