从事银行核心系统设计开发的程序猿
分类: DB2/Informix
2017-05-12 00:07:33
在EXEC SQL中,如果SQL语句出现了“//”符号,那么会导致后面一直到“;”结尾的SQL语句都被忽略,而不止当前行。这样往往会出乎程序员的意料。
例如以下例子程序t1.ec。
正常编译可以通过:
$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
$