语句: adoquery1.sql.add('select * from table1 where fieldname1=:var1 or fieldname2 in (select fieldname2 from table2 where fieldname3=:var1)'); 提示错误:不正常的参数定义,提供了不一致或不完整的信息。 ————————————————————————————————————————语句改成: adoquery1.sql.add('select * from table1 where fieldname1=:var1 or fieldname2 in (select fieldname2 from table2 where fieldname3=:var2)'); 这样正确。 ————————————————————————————————————————语句改成: adoquery1.sql.add('select * from table1 where fieldname1=:var1 or fieldname2 =:var1 也是正确的———————————————————————————————————————— 语句改成: adoquery1.sql.add('select * from table1 where fieldname2 in (select fieldname2 from table2 where fieldname3=:var1 or fieldname4=:var1)'); 是不正确的———————————————————————————————————————— 根据上面多次测试,得出如下结论: sql语句中没有圆括弧时,相同变量可以出现多次。 sql语句中存在圆括弧时,相同变量不能出现多次。
如果说:参数不允许同名语句 adoquery1.sql.add('select * from table1 where fieldname1=:var1 or fieldname2 =:var1'); 使用相同参数,也是可以正常执行的。只要sql语句中没有括号,多个相同参数也可以,我测试了。这就有点奇怪,可能是特例吧!
用
var1和var2吧
adoquery1.sql.add('select * from table1 where fieldname1=:var1 or fieldname2 in (select fieldname2 from table2 where fieldname3=:var1)'); 提示错误:不正常的参数定义,提供了不一致或不完整的信息。
————————————————————————————————————————语句改成:
adoquery1.sql.add('select * from table1 where fieldname1=:var1 or fieldname2 in (select fieldname2 from table2 where fieldname3=:var2)');
这样正确。
————————————————————————————————————————语句改成:
adoquery1.sql.add('select * from table1 where fieldname1=:var1 or fieldname2 =:var1
也是正确的————————————————————————————————————————
语句改成:
adoquery1.sql.add('select * from table1 where fieldname2 in (select fieldname2 from table2 where fieldname3=:var1 or fieldname4=:var1)');
是不正确的————————————————————————————————————————
根据上面多次测试,得出如下结论:
sql语句中没有圆括弧时,相同变量可以出现多次。
sql语句中存在圆括弧时,相同变量不能出现多次。
adoquery1.sql.add('select * from table1 where fieldname1=:var1 or fieldname2 =:var1');
使用相同参数,也是可以正常执行的。只要sql语句中没有括号,多个相同参数也可以,我测试了。这就有点奇怪,可能是特例吧!