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
好的,所以我在这里使用 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