我有这个简单的功能:
CREATE OR REPLACE FUNCTION soundavity.perform_search_by_serie_name( in_search_text text )
RETURNS bigint[] AS
$BODY$
DECLARE
match_id bigint[];
BEGIN
SELECT id INTO match_id
FROM soundavity.tv_serieslist_tbl
where id IN (
SELECT id
FROM table
WHERE to_tsvector('english', name) @@ to_tsquery('english', in_search_text)
)
LIMIT 10;
RETURN match_id;
END;
但是当我尝试
时select perform_search_by_serie_name('something');
Postgres回归:
ERROR: array value must start with "{" or dimension information
CONTEXT: PL/pgSQL function soundavity.perform_search_by_serie_name(text) line 8 at SQL statement
错误在哪里?
答案 0 :(得分:1)
'SELECT id'返回setof bigint而不是bigint数组。 试试这个:
DECLARE
match_id bigint[] = '{}';
rid bigint;
BEGIN
for rid in
SELECT ... -- without INTO
loop
match_id:= array_append(match_id, rid);
end loop;
RETURN match_id;