pgAdmin не может выполнить инструкцию sql - PullRequest
1 голос
/ 19 февраля 2012

Я новичок в pgSQL, поэтому я выполняю различные рекомендации sql - вот следующий - я хочу получить количество затронутых строк последней командой sql:

 delete from "Menu" where "ID" = 0;
 GET DIAGNOSTICS integer_var = ROW_COUNT;
 select integer_var;

но pgAdmin говорит:

 ERROR:  syntax error at or near "GET"
 LINE 1: GET DIAGNOSTICS integer_var = ROW_COUNT;

что я делаю не так?

1 Ответ

7 голосов
/ 19 февраля 2012

Начиная с PostgreSQL 9.0, вы можете использовать DO для выполнения блоков анонимного кода

DO $$
DECLARE
    integer_var integer;
BEGIN
    delete from "Menu" where "ID"  = 0;
    GET DIAGNOSTICS integer_var = ROW_COUNT;
    raise notice 'Rows removed: %', integer_var;
END$$;

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

Если это в конце концов будет включено в какую-то программу, у вас, вероятно, есть возможность получить количество затронутых строк напрямую. libpq содержит функцию PQcmdTuples, которая возвращает количество затронутых строк. PHP имеет функцию pg_affered_rows и в JDBC executeUpdate возвращает количество затронутых строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...