PostgreSQL 准备语句不适用于 plsql if 语句

PostgreSQL Prepared statement not working with plsql if statement

好的,所以我在这里使用 plsql if 语句进行 pgsql 查询:

DO
$do$
BEGIN
IF  & (SELECT group_flags FROM technic WHERE id =  LIMIT 1) > 0 THEN
   UPDATE technic SET group_flags = group_flags -  WHERE id = ;
END IF;
END
$do$

我正在用 pg_prepare() PHP 函数准备它,然后执行它。 问题是 pgsql returns 这个错误 -

Warning: pg_execute(): Query failed: ERROR: bind message supplies 2 parameters, but prepared statement "query1990094225" requires 0

但是我在查询中有两个参数...

为了确保语法不是问题,我用整数替换了参数,一切都按预期工作。

我不明白问题出在哪里。

提前致谢!

您不能使用带参数的 DO 语句,但幸运的是您不必:

UPDATE technic
SET group_flags = group_flags - 
WHERE id = 
  AND (SELECT group_flags
       FROM technic
       WHERE id = 
       LIMIT 1
      ) > 0