Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
pgAdmin无法执行sql语句_Sql_Postgresql - Fatal编程技术网

pgAdmin无法执行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 =

我是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 $$
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执行该函数。