0

这是我的功能的外观:

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 版本。

4

1 回答 1

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;
于 2016-05-14T02:01:54.947 回答