Postgresql函数
这些是提供给我的类型定义Postgresql函数,sql,postgresql,plpgsql,Sql,Postgresql,Plpgsql,这些是提供给我的类型定义 create type IR as (pattern_number integer, uoc_number integer); 我目前的进展是: create or replace function q1(pattern text, uoc_threshold integer) returns setof IR as $$ BEGIN RETURN QUERY select count(code) from temp where code
create type IR as (pattern_number integer, uoc_number integer);
我目前的进展是:
create or replace function q1(pattern text, uoc_threshold integer)
returns setof IR
as $$
BEGIN
RETURN QUERY
select count(code) from temp where code like $1;
RETURN QUERY
select count(code) from temp where code like $1 and uoc > $2;
END;
$$ language plpgsql;
我的输出需要如下所示:
问题:-
我得到一个错误,说:
错误:查询的结构与函数结果类型不匹配
详细信息:返回的类型bigint与第1列中的预期类型integer不匹配。
上下文:PL/pgSQL函数q1text,返回查询时的整数行3
如何解决此问题?这是您想要的吗
create or replace function q1(pattern text, uoc_threshold integer)
returns setof IR
as $$
BEGIN
RETURN QUERY
select (select count(code) from temp where code like $1)::integer
,(
select count(code) from temp where code like $1 and uoc > $2)::integer;
END;
$$ language plpgsql;
函数返回两行和一个bigint列。你想要一行一列的记录,对吗?您需要从临时位置代码中选择countcode(如$1)作为模式编号,并从临时位置代码中选择countcode(如$1和uoc>$2作为uoc\U编号?)?。。我用代码-sic?@VaoTsun-Yes添加了答案。这正是我想要的,但你的回答似乎无法解决错误。你说得对,但错误仍然存在。这是同样的错误。
create or replace function q1(pattern text, uoc_threshold integer)
returns setof IR
as $$
BEGIN
RETURN QUERY
select (select count(code) from temp where code like $1)::integer
,(
select count(code) from temp where code like $1 and uoc > $2)::integer;
END;
$$ language plpgsql;