mam struktruę tabeli:
p_category: id, parent_id, name
czyli w zasadzie standardzik. Chciałbym napisać funkcję, która zwróci mi ścieżkę od danej kategorii do korzenia. Mam coś takiego:
CREATE OR REPLACE FUNCTION f_get_category_path(category_id integer, shop_id integer) RETURNS p_category AS $BODY$DECLARE r p_category%ROWTYPE; BEGIN SELECT * INTO r FROM p_category WHERE id=$1; IF (r.parent_id > 0) THEN -- SELECT * FROM f_get_category_path(r.parent_id, $2); END IF; RETURN r; END;$BODY$ LANGUAGE 'plpgsql' VOLATILE COST 100;
Mam problem z rekurencyjnym wywołaniem tej funkcji. Jeśli odkomentuję linijkę w warunku otrzymuję:
Kod
ERROR: query has no destination for result data
HINT: If you want to discard the results of a SELECT, use PERFORM instead.
CONTEXT: PL/pgSQL function "f_get_category_path" line 7 at SQL statement
SQL statement "SELECT * FROM f_get_category_path( $1 , $2 )"
PL/pgSQL function "f_get_category_path" line 7 at SQL statement
HINT: If you want to discard the results of a SELECT, use PERFORM instead.
CONTEXT: PL/pgSQL function "f_get_category_path" line 7 at SQL statement
SQL statement "SELECT * FROM f_get_category_path( $1 , $2 )"
PL/pgSQL function "f_get_category_path" line 7 at SQL statement
Jak to poprawnie zapisać?
pion