postgresql — PHP: создайте и запустите процедуру PostGres (BEGIN … END) с параметрами привязки

Я использую Postgres с PHP, у меня есть два зависимых запроса, как показано ниже:

INSERT INTO tab2
SELECT * FROM tab1 WHERE  col1 = $1 AND  col2 IS NOT NULL;

DELETE FROM tab1 WHERE  col1 = $1 AND  col2  IS NOT NULL  ;

Я хочу, чтобы они оба запускались или ни один из них. Итак, я создал ниже блок кода:

DO $$
BEGIN
INSERT INTO tab2
SELECT * FROM tab1 WHERE  col1 = $1 AND  col2  IS NOT NULL  ;
DELETE FROM tab1 WHERE  col1 = $1 AND  col2  IS NOT NULL  ;
END$$

Но это не работает и дает ошибку ниже:

ОШИБКА: В сообщении bind указаны 1 параметр, но для подготовленного оператора «» требуется 0

PHP-код:

$result = pg_query_params($pg_con_write,$query_PG,array($Param1));

Я думаю, что не могу использовать параметры привязки таким образом … Поэтому, пожалуйста, предложите наилучший способ сделать это …

0

Решение

Я думаю, что $$ это проблема, вы должны переписать ваш запрос следующим образом:

BEGIN;
INSERT INTO tab2
SELECT * FROM tab1 WHERE  col1 = $1 AND  col2  IS NOT NULL;
DELETE FROM tab1 WHERE  col1 = $1 AND  col2  IS NOT NULL;
COMMIT;
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector