悲剧...
FireDAC连接Postgre数据库, 使用默认的属性, 一次执行多条SQL的时候, 会报"cannot insert multiple commands into a prepared statement"这样的错误
到网上查了一下(百度), 什么信息都找不到, 然后又google, 找到很多国外的信息 (此句纯粹为了鄙视百度...各位看官可以忽略)
搜啊搜, 大概的意思是, Postgre有2种模式 一种是只能执行一句SQL, 另外一种是支持多SQL批量执行的, 查找过程就忽略的, 总之是各种猜测
最后发现Postgre对于执行模式的接口有2个: PQexec和
PQexecParams 这个可以在Postgre的帮助文档31.3.1 中找到相关资料
其中PQexec就是支持多个SQL同时执行的, 而PQexecParams则是只支持一句SQL, 他们的区别在于是否支持SQL变量参数值
而firedac默认是使用PQexecParams接口来执行的, 所以就会报那个错误, 如果想以PQexec方式执行, 方法如下:
1.FDConnection.ExecSQL
2.设置FDQuery.ResourceOptions.DirectExecute := True;
问题解决
时间: 2024-10-17 18:36:10