Więc array_append
zwraca tablicę i musisz przypisać tę wartość zwracaną do czegoś. Myślę też, że chcesz array_to_string
na końcu funkcji, a nie array_to_text
. I primes
jest tablicą, więc chcesz array_append(primes, mycount)
zamiast próbować dołączać do wpisu w primes
.
CREATE OR REPLACE FUNCTION primes (IN integer) RETURNS TEXT AS $$
DECLARE
counter INTEGER = $1;
primes int [];
mycount int;
BEGIN
WHILE counter != 0 LOOP
mycount := count(primes);
primes := array_append(primes, mycount);
counter := counter - 1;
END LOOP;
RETURN array_to_string(primes, ',');
END;
$$ LANGUAGE 'plpgsql';
Nie wiem, co zamierzasz mycount := count(primes);
do zrobienia, być może chciałeś powiedzieć mycount := array_length(primes, 1);
aby otrzymać ciąg kolejnych liczb całkowitych w primes
.