PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

l'utilizzo di Array_append mi dà un errore di sintassi durante la creazione della funzione PostgreSQL

Dal manuale di precisione :

Quindi array_append restituisce un array e devi assegnare quel valore di ritorno a qualcosa. Inoltre, penso che tu voglia array_to_string alla fine della tua funzione, non array_to_text . E primes è un array quindi vuoi array_append(primes, mycount) piuttosto che provare ad aggiungere una voce in 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';

Non so cosa intendi mycount := count(primes); da fare, forse volevi dire mycount := array_length(primes, 1); in modo da ottenere una sequenza di interi consecutivi in ​​primes .