Witam,
męczę się z problemem zwracania wyników z funkcji w formie tabeli sql.. W sieci jest 'rzekomo' wiele przykładów, ale żaden u mnie nie chce zadziałać.. -.-
Ostatecznie poniższy kod zwraca mi wynik wszystkich kolumn w jednej tylko kolumnie.. (wynik w postaci stringa, gdzie poszczególne kolumny oddzielone są przecinkiem..) (a powinien każdą kolumnę osobno..)
CREATE OR REPLACE FUNCTION "schemat"."testtest" (clientID INTEGER)
RETURNS TABLE (
cgacID INTEGER
,col1 INTEGER[]
,col2 INTEGER[]
,col3 NUMERIC[]
) AS $func$
BEGIN
RETURN QUERY
SELECT cgac_pl."Col0", cgac_pl."Col1", cgac_pl."Col2", cgac_pl."Col3"
FROM "schemat"."tab1" AS cgac_pl
INNER JOIN "schemat"."tab2" AS cg
ON cg."col1" = cgac_pl."col1"
WHERE clientID = ANY ("ClientID")
AND CURRENT_TIMESTAMP BETWEEN "Col4" AND "Col5";
END
$func$
LANGUAGE plpgsql VOLATILE;
Próbowałem również coś pokombinować z RETURN SETOF record i to nawet działało OK, ale gdy pobierałem wyniki wyłącznie z jednej tabeli.. (dając typ SETOF nazwa_tabeli), ale dla select'a który pobiera dane z kilku tabel to niestety już nie chciało odpalić.. (był jakiś błąd z kontekstem użycia dla typu record...)
Miał ktoś okazje zmierzyć się z podobnym 'problemem' ?