pgAdmin无法执行sql语句
我是pgSQL的新手,所以我正在执行不同的sql命令-下面是下一个命令-我想通过最后一个sql命令获得受影响行的计数:pgAdmin无法执行sql语句,sql,postgresql,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 =
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 $$
DECLARE
integer_var integer;
BEGIN
delete from "Menu" where "ID" = 0;
GET DIAGNOSTICS integer_var = ROW_COUNT;
raise notice 'Rows removed: %', integer_var;
END$$;
我用一个通知替换了最后一个选择,因为我不能完全确定您想要对该选择的结果做什么,而这种方式是最容易说明的
如果这最终要合并到某个程序中,您可能有可能直接检索受影响行的数量。libpq包含函数PQcmdTuples,该函数返回受影响的行数。PHP具有函数pg_impact_rows,在JDBC executeUpdate中返回受影响的行数。从PostgreSQL 9.0开始,您可以使用它执行匿名代码块
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$$;
我用一个通知替换了最后一个选择,因为我不能完全确定您想要对该选择的结果做什么,而这种方式是最容易说明的
如果这最终要合并到某个程序中,您可能有可能直接检索受影响行的数量。libpq包含函数PQcmdTuples,该函数返回受影响的行数。PHP有函数pg_impact_rows,在JDBC executeUpdate中返回受影响的行数。我很确定这个命令只能在PL/pgSQL代码的上下文中运行,而不仅仅是在pgAdmin.hmmm中运行的任意语句。。那么,就没有办法使用pgAdmin获得受影响的行数了?嗯,至少可以创建一个plpqsql存储过程,尽管我猜您必须传递SQL insert语句作为参数执行,并让该过程动态执行。@DreadAngel-Yup,您必须编写一个函数,然后从pgAdmin执行该函数。我非常确定该命令只能在PL/pgSQL代码的上下文中运行,而不仅仅是在pgAdmin.hmmm中运行的任意语句。。那么,就没有办法使用pgAdmin获得受影响的行数了?嗯,至少可以创建一个plpqsql存储过程,尽管我猜您必须传递SQL insert语句作为参数执行,并让该过程动态执行。@DreadAngel-Yup,您必须编写一个函数,然后从pgAdmin执行该函数。