Postgresql Postgres执行计数(*)始终返回0
我在SQL中查询postgres以获取计数Postgresql Postgres执行计数(*)始终返回0,postgresql,stored-procedures,plpgsql,Postgresql,Stored Procedures,Plpgsql,我在SQL中查询postgres以获取计数 SELECT COUNT(*) AS count_variable FROM user WHERE something=something; 当我执行时,它正在返回计数。然后根据要求,这个查询是在Postgres函数中需要的。当我在函数中使用这个查询时,Postgres回答 错误:查询没有结果数据的目标 提示:如果要放弃选择的结果,请使用“执行”。 上下文:PL/pgSQL函数myFunction(整数,整数)SQL语句的第11行 我搜索了这个错误,
SELECT COUNT(*) AS count_variable FROM user WHERE something=something;
当我执行时,它正在返回计数。然后根据要求,这个查询是在Postgres函数中需要的。当我在函数中使用这个查询时,Postgres回答
错误:查询没有结果数据的目标提示:如果要放弃选择的结果,请使用“执行”。
上下文:PL/pgSQL函数myFunction(整数,整数)SQL语句的第11行 我搜索了这个错误,发现如果在使用
SELECT
时查询返回null,就会发生这种情况,但当直接在命令行上执行时,我已经得到了值
还有一些帖子告诉我们放弃它,我们应该使用PERFORM
而不是SELECT
。所以我在同一个函数中的新查询是
PERFORM COUNT(*) AS count_variable FROM user WHERE something=something;
此函数开始工作后,但count_变量始终为零。我在执行查询后使用raise检查它
raise notice 'count_variable: %', count_variable;
count_变量声明为
DECLARE
count_variable int;
...
BEGIN
count_variable := 0;
是否有我遗漏或做错的地方,或者COUNT()函数在函数内部不起作用。如果count()不可用,则可以使用它们来计算行数。在我看到的某个地方,@@ROWCOUNT
也是一个获取行计数的变量,但它给出了错误
非常感谢您的帮助。您不想放弃选择的结果,因此执行是错误的选择。您希望将查询结果存储在一个变量中,因此需要一个
INTO
子句:
DECLARE
count_variable int;
...
BEGIN
SELECT COUNT(*) INTO count_variable
FROM "user"
WHERE something=something;
...
声明
计数变量int;
...
开始
在COUNT_变量中选择COUNT(*)
来自“用户”
某物=某物;
...
仅仅因为给列指定了与变量同名的别名,并不意味着结果存储在该变量中。列名与变量没有关系
本手册对此进行了详细说明。尤其是章节您不想放弃选择的结果,因此执行是错误的选择。您希望将查询结果存储在一个变量中,因此需要一个
INTO
子句:
DECLARE
count_variable int;
...
BEGIN
SELECT COUNT(*) INTO count_variable
FROM "user"
WHERE something=something;
...
声明
计数变量int;
...
开始
在COUNT_变量中选择COUNT(*)
来自“用户”
某物=某物;
...
仅仅因为给列指定了与变量同名的别名,并不意味着结果存储在该变量中。列名与变量没有关系
本手册对此进行了详细说明。特别是这一章可能你使用过MSSQL-PostgreSQL中的存储过程有很大的不同-更像Oracle-请先阅读文档-这几页谢谢您的信息,先生。已接受答案中给出的问题,并给出解释。我使用的是
AS
而不是INTO
作为变量。可能您使用的是MSSQL-PostgreSQL中的存储过程明显不同-更像Oracle-请先阅读文档-这是几页感谢您提供的信息,先生。已接受答案中给出的问题,并给出解释。我使用作为
而不是作为
变量。