在Delphi程序中连Ms SQLServer,程序动态生成了n条insert语句(n有时会上千),当调用Query控件执行ExecSQL时,并且当n大于2XXX时,会报语法错误,而实际上那些动态生成的sql语法并没有问题,请问到底是什么问题?

解决方案 »

  1.   

    可能。
    query的text长度有限制。好像就是2048
      

  2.   

    注意你的SQL语句在某一行中有问题,并非Query的Bug.
    建议你通过字符串输出,把SQL语句执行后,拷贝到查询分析器中执行。
      

  3.   

    query的text长度有限制。好像就是2048
    =========================================
    Query的text为string类型,其最大为 2GB
      

  4.   

    “注意你的SQL语句在某一行中有问题,并非Query的Bug.
    建议你通过字符串输出,把SQL语句执行后,拷贝到查询分析器中执行。”
    =================================================================================
    我把动态生成的语句减少在一定范围里,就不再出错或出错的语句不再是那一句了,如何解释?拷贝到查询分析器中执行应该也没有问题,因为每条语句都是由程序生成,都是形如“insert tablename('XXXX')”的语句,不存在语法错误问题。我现在不在单位,说不出具体错误,但我估计原因是在query里面的sql语句有长度限制,因为sql server报出来的错误是语法错误,而“错误”的一句“inse”是被截去了后半段的。