我在SQL Postgres的查询,以获得数Postgres的PERFORM COUNT(*)总是返回0
SELECT COUNT(*) AS count_variable FROM user WHERE something=something;
当我执行,它返回计数。然后,按规定被要求Postgres的功能。当这里面查询我用内部功能此查询,Postgres的回答
ERROR: query has no destination for result data
HINT: If you want to discard the results of a SELECT, use PERFORM instead.
CONTEXT: PL/pgSQL function myfuntion(integer,integer) line 11 at SQL statement
我搜索了这个错误,结果发现,出现这种情况,如果查询同时使用SELECT
返回null,但当直接在命令行上执行时,我已经获得了价值。
还有一些帖子告诉丢弃它,我们应该使用PERFORM
而不是SELECT
。所以我在同一个函数中的新查询是
PERFORM COUNT(*) AS count_variable FROM user WHERE something=something;
此函数开始工作后,但count_variable总是为零。我在PERFORM查询后使用raise检查它。
raise notice 'count_variable: %', count_variable;
count_variable被声明为
DECLARE
count_variable int;
...
BEGIN
count_variable := 0;
有什么我失踪或者做错了,或COUNT()函数内部功能不工作。如果count()不可用,那么它们是用于计数行的任何替代方法。在某处我看到@@ROWCOUNT
也是一个获取行数的变量,但它给出错误。
帮助将不胜感激。
可能你和MSSQL一起工作 - PostgreSQL中的存储过程有很大不同 - 更像是Oracle--请先阅读文档 - 它只是几页https://www.postgresql.org/docs/current/ static/plpgsql.html –
感谢您的信息先生。问题发现在接受答案给出的解释。根据需要,我使用'AS'而不是'INTO'来将其放入变量中。 –