PHP: создать и запустить процедуру PostGres (BEGIN ... END) с параметрами привязки - PullRequest
0 голосов
/ 17 декабря 2018

Я использую 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$$

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

ОШИБКА: в сообщении связывания содержится 1 параметр, но подготовленный оператор ""требуется 0

код PHP:

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

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

1 Ответ

0 голосов
/ 17 декабря 2018

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

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...