zoukankan      html  css  js  c++  java
  • Postgre cannot insert multiple commands into a prepared statement

    悲剧...

    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方式执行, 有下面2种方法:

    1.FDConnection.ExecSQL

    2.设置FDQuery.ResourceOptions.DirectExecute := True;

    问题解决

  • 相关阅读:
    数据库路由中间件MyCat
    数据库路由中间件MyCat
    数据库路由中间件MyCat
    数据库路由中间件MyCat
    数据库路由中间件MyCat
    数据库路由中间件MyCat
    数据库路由中间件MyCat
    云架构师进阶攻略(3)
    PAT 1059. C语言竞赛
    PAT 1058. 选择题
  • 原文地址:https://www.cnblogs.com/lzl_17948876/p/4211139.html
Copyright © 2011-2022 走看看