PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

usando Array_append me dá erro de sintaxe ao criar a função PostgreSQL


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 .