为什么我的 plpgsql 函数 return 没有行
why does my plpgsql function return no rows
当这两个查询 运行 独立于用户时,我得到结果 300 和 0 但是在我的函数中我没有返回任何行。
我正从 SQL 服务器迁移到 PostgresSQL 所以有些东西对我来说有点陌生!
create or replace function getsummary(userid int)
returns table (assetTotal numeric, liabilityTotal numeric)
as $$
BEGIN
SELECT sum(t.credit) - sum(t.debit)
into assetTotal
from transactions t
join user_institutes i on t.user_institute_id = i.id
where i.account_type in (1,3,4,5)
and i.user_id = userid;
select sum(t.credit) - sum(t.debit)
into liabilityTotal
from transactions t
join user_institutes i on t.user_institute_id = i.id
where i.account_type in (2,8,10)
and i.user_id = userid;
END
$$ language plpgsql;
select * from getsummary(1)
非常感谢
没有深入了解您的查询,只是指出缺失的部分。试试看?:
create or replace function getsummary(userid int)
returns table (assetTotal numeric, liabilityTotal numeric)
as $$
DECLARE
_assetTotal numeric;
_liabilityTotal numeric;
BEGIN
SELECT sum(t.credit) - sum(t.debit)
into _assetTotal
from transactions t
join user_institutes i on t.user_institute_id = i.id
where i.account_type in (1,3,4,5)
and i.user_id = userid;
select sum(t.credit) - sum(t.debit)
into _liabilityTotal
from transactions t
join user_institutes i on t.user_institute_id = i.id
where i.account_type in (2,8,10)
and i.user_id = userid;
return query select _assetTotal, _liabilityTotal;
END
$$ language plpgsql;
当这两个查询 运行 独立于用户时,我得到结果 300 和 0 但是在我的函数中我没有返回任何行。
我正从 SQL 服务器迁移到 PostgresSQL 所以有些东西对我来说有点陌生!
create or replace function getsummary(userid int)
returns table (assetTotal numeric, liabilityTotal numeric)
as $$
BEGIN
SELECT sum(t.credit) - sum(t.debit)
into assetTotal
from transactions t
join user_institutes i on t.user_institute_id = i.id
where i.account_type in (1,3,4,5)
and i.user_id = userid;
select sum(t.credit) - sum(t.debit)
into liabilityTotal
from transactions t
join user_institutes i on t.user_institute_id = i.id
where i.account_type in (2,8,10)
and i.user_id = userid;
END
$$ language plpgsql;
select * from getsummary(1)
非常感谢
没有深入了解您的查询,只是指出缺失的部分。试试看?:
create or replace function getsummary(userid int)
returns table (assetTotal numeric, liabilityTotal numeric)
as $$
DECLARE
_assetTotal numeric;
_liabilityTotal numeric;
BEGIN
SELECT sum(t.credit) - sum(t.debit)
into _assetTotal
from transactions t
join user_institutes i on t.user_institute_id = i.id
where i.account_type in (1,3,4,5)
and i.user_id = userid;
select sum(t.credit) - sum(t.debit)
into _liabilityTotal
from transactions t
join user_institutes i on t.user_institute_id = i.id
where i.account_type in (2,8,10)
and i.user_id = userid;
return query select _assetTotal, _liabilityTotal;
END
$$ language plpgsql;