Do manual fino :
Então
array_append
retorna uma matriz e você precisa atribuir esse valor de retorno a algo. Além disso, acho que você quer array_to_string
no final da sua função, não array_to_text
. E primes
é um array então você quer array_append(primes, mycount)
em vez de tentar anexar a uma entrada em 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';
Não sei o que você pretende
mycount := count(primes);
fazer, talvez você quis dizer mycount := array_length(primes, 1);
para que você obtenha uma sequência de inteiros consecutivos em primes
.