Function 执行postgresql函数时出错
我有一个简单的功能:Function 执行postgresql函数时出错,function,postgresql,stored-procedures,plpgsql,Function,Postgresql,Stored Procedures,Plpgsql,我有一个简单的功能: 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 (
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
错误在哪里?'SELECT id'返回一组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;
“SELECT id”返回bigint not 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;