От изящно ръководство :
Така че array_append
връща масив и трябва да присвоите тази върната стойност на нещо. Освен това мисля, че искате array_to_string
в края на вашата функция, а не array_to_text
. И primes
е масив, така че искате array_append(primes, mycount)
вместо да се опитвате да добавите към запис в 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';
Не знам какво възнамерявате mycount := count(primes);
да направите, може би сте искали да кажете mycount := array_length(primes, 1);
така че да получите поредица от последователни цели числа в primes
.