如何 return 计数函数 1 在函数 2 中的结果
How to return COUNT of function1's results in function2
我有一个函数,我们称它为 get_pants
,returns psql
中的以下函数:
select * from get_pants ('calvin klein');
size | length | color | type | price | discount | inventory | creation_timestamp
-----+----------+------------+-------------+-------------+-------------+---------+--------------------
(0 rows)
我也可以在psql
中统计get_pants
的结果,就像这样
select count(*) from get_pants ('calvin klein');
count
-------
0
(1 row)
但是当我将相同的代码放入一个函数中时,我们将其命名为foo
,如下所示,为什么会出现语法错误
create or replace function foo ()
returns bigint as $$
begin
return
select count(*) from get_pants ('calvin klein');
end
$$ language 'plpgsql';
syntax error at or near "select"
LINE 4: return select count(*) from get_pants ('calvin.kl...
^
在PL/pgSQL中你需要先将结果存储在一个变量中:
create or replace function foo()
returns bigint
as $$
declare
l_count bigint;
begin
select count(*)
into l_result
from get_pants ('calvin klein');
return l_result;
end
$$
language plpgsql
stable;
但是您不需要 PL/pgSQL:
create or replace function foo()
returns bigint
as $$
select count(*)
from get_pants ('calvin klein');
$$
language sql
stable;
请注意,语言名称是一个标识符,不应用单引号引起来。该语法已弃用,未来版本可能不会接受。
我有一个函数,我们称它为 get_pants
,returns psql
中的以下函数:
select * from get_pants ('calvin klein');
size | length | color | type | price | discount | inventory | creation_timestamp
-----+----------+------------+-------------+-------------+-------------+---------+--------------------
(0 rows)
我也可以在psql
中统计get_pants
的结果,就像这样
select count(*) from get_pants ('calvin klein');
count
-------
0
(1 row)
但是当我将相同的代码放入一个函数中时,我们将其命名为foo
,如下所示,为什么会出现语法错误
create or replace function foo ()
returns bigint as $$
begin
return
select count(*) from get_pants ('calvin klein');
end
$$ language 'plpgsql';
syntax error at or near "select"
LINE 4: return select count(*) from get_pants ('calvin.kl...
^
在PL/pgSQL中你需要先将结果存储在一个变量中:
create or replace function foo()
returns bigint
as $$
declare
l_count bigint;
begin
select count(*)
into l_result
from get_pants ('calvin klein');
return l_result;
end
$$
language plpgsql
stable;
但是您不需要 PL/pgSQL:
create or replace function foo()
returns bigint
as $$
select count(*)
from get_pants ('calvin klein');
$$
language sql
stable;
请注意,语言名称是一个标识符,不应用单引号引起来。该语法已弃用,未来版本可能不会接受。