PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Die Verwendung von Array_append gibt mir einen Syntaxfehler beim Erstellen der PostgreSQL-Funktion

Aus dem feines Handbuch :

Also array_append gibt ein Array zurück und Sie müssen diesen Rückgabewert etwas zuweisen. Außerdem denke ich, dass Sie array_to_string wollen am Ende Ihrer Funktion, nicht array_to_text . Und primes ein Array ist, also möchten Sie array_append(primes, mycount) anstatt zu versuchen, an einen Eintrag in primes anzuhängen .

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';

Ich weiß nicht, was Sie beabsichtigen mycount := count(primes); vielleicht wollten Sie sagen mycount := array_length(primes, 1); sodass Sie eine Folge aufeinanderfolgender Ganzzahlen in primes erhalten würden .