以下是我的功能外观:
create or replace function datafabric.test(psi_codes text[])
returns table (asset character varying (255), parent_asset character varying (255))
as
$$
select asset, parent_asset
from americas.asset a
left join americas.prod_int p on a.row_id = p.row_id
where root_asset_id in (select root_asset_id from americas.asset where p.name = ANY($1))
$$ LANGUAGE 'SQL' VOLATILE;
然而,问题是我得到了这个
错误:函数datafabric.test()不存在SQL状态:42883在创建功能期间。
请注意,此功能有效。但是,我想在pgadmin屏幕上输出结果。我现在无法做到这一点。
请帮忙。我正在使用postgresql 8.3版本。
答案 0 :(得分:1)
PostgreSQL 8.3不支持RETURNS TABLE功能。您还必须指定不带引号的函数的语言。
您可以通过以下方式实现类似的行为:
create or replace function
datafabric.test(psi_codes text[],
OUT asset character varying (255),
OUT parent_asset character varying (255))
RETURNS SETOF RECORD as $$
select asset, parent_asset
from americas.asset a
left join americas.prod_int p on a.row_id = p.row_id
where root_asset_id in (select root_asset_id from americas.asset where p.name = ANY($1))
$$ LANGUAGE SQL VOLATILE;