PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

l'utilisation de Array_append me donne une erreur de syntaxe lors de la création de la fonction PostgreSQL

À partir du manuel fin :

Donc array_append renvoie un tableau et vous devez affecter cette valeur de retour à quelque chose. Aussi, je pense que vous voulez array_to_string à la fin de votre fonction, pas array_to_text . Et primes est un tableau donc vous voulez array_append(primes, mycount) plutôt que d'essayer d'ajouter à une entrée dans 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';

Je ne sais pas ce que vous voulez dire mycount := count(primes); à faire, peut-être vouliez-vous dire mycount := array_length(primes, 1); de sorte que vous obtiendriez une séquence d'entiers consécutifs en primes .