PostgreSQL Prepared 语句不适用于 plsql if 语句

好的,所以我在这里有一个带有 plsql if 语句的 pgsql 查询:


DO

$do$

BEGIN

IF $1 & (SELECT group_flags FROM technic WHERE id = $2 LIMIT 1) > 0 THEN

   UPDATE technic SET group_flags = group_flags - $1 WHERE id = $2;

END IF;

END

$do$

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


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

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


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


我不明白问题出在哪里。


提前致谢!


子衿沉夜
浏览 214回答 1
1回答

墨色风雨

您不能使用DO带参数的语句,但幸运的是您不必:UPDATE technicSET group_flags = group_flags - $1WHERE id = $2  AND (SELECT group_flags       FROM technic       WHERE id = $2       LIMIT 1      ) > 0
打开App,查看更多内容
随时随地看视频慕课网APP