sql - pgAdmin 无法执行 sql 语句

标签 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;

我做错了什么?

最佳答案

从 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 返回受影响的行数。

关于sql - pgAdmin 无法执行 sql 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9345662/

相关文章:

bash - 使用\copy 时的 Postgres 变量替换

Postgresql:间隔和夏令时问题

sql - SSRS 报告以及每条记录的相关子报告

php - 为通过 PHP 建立的 PDO 连接设置 appName

sql基于group by删除

sql - 如何获取数据库中所有表的名称?

postgresql - Gradle项目中如何连接PostgreSQL

mysql - spring jpa数据原生Sql查询的问题

mysql - 在单个查询中更新 2 个表中的随机记录

mysql - 为总和(工作时间)< x 的用户选择最大日期