pgAdmin无法执行sql语句

时间:2012-02-19 00:54:10

标签: sql postgresql

我是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 个答案:

答案 0 :(得分:7)

从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_affected_rows,在JDBC中,executeUpdate返回受影响的行数。