0

我正要创建一个用户定义的函数来在基于超图的数据库中实现分面搜索,该函数将返回带有计数的分面。问题是我需要传递要搜索的字段集。我不知道该怎么做。请看一下功能并帮助我。我想传递 search_fields 有点像 {'node_type', 'node_title', 'title'} 等。

CREATE OR REPLACE FUNCTION facets(
    IN keyword text, IN search_fields text, IN relation_name text, IN node_type text, IN group_by text, 
    OUT facet text, OUT count integer
   )

    RETURNS SETOF record AS

    $BODY$

谢谢

4

1 回答 1

1

由于我不明白您到底在尝试什么,因此我将其作为首发。

要返回一组数组传递的列:

create or replace function facets(
    columns text[]
) returns setof record language plpgsql as $body$
begin
    return query execute format($$
        select %1$I, %2$I from t
    $$, columns[1], columns[2]);
end; $body$;

要检索它,您必须声明返回类型:

select * from facets(array['a', 'b']) s(a text, b text);
于 2013-04-24T13:20:40.637 回答