如何在 postgresql 中创建一个接受参数数组和 returns a table 的函数

How to create a function in postgresql that accepts array of parameters and returns a table

我的函数如下所示:

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())
$$ LANGUAGE 'SQL' VOLATILE;

但是,问题是我得到了这个

ERROR: function datafabric.test() does not exist SQL state: 42883 DURING the CREATION OF THE FUNCTION.

请注意,此功能有效。但是,我想在 pgadmin 屏幕上输出结果。我现在做不到。

请帮忙。我使用的是 postgresql 8.3 版本。

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())
$$ LANGUAGE SQL VOLATILE;