PostgreSQL: возвращать select count (*) из таблицы; - PullRequest
2 голосов
/ 17 января 2011

, пожалуйста, помогите мне еще с 1 PL / pgSQL вопросом.

У меня PHP-скрипт, запускаемый как ежедневный cronjob и удаляющий старые записи из 1 главной таблицы и несколько других таблиц, ссылающихся на столбец «id»:

create or replace function quincytrack_clean()
        returns integer as $BODY$
        begin
                create temp table old_ids 
                (id varchar(20)) on commit drop;

                insert into old_ids
                select id from quincytrack
                where age(QDATETIME) > interval '30 days';

                delete from hide_id where id in
                (select id from old_ids);

                delete from related_mks where id in
                (select id from old_ids);

                delete from related_cl where id in
                (select id from old_ids);

                delete from related_comment where id in
                (select id from old_ids);

                delete from quincytrack where id in
                (select id from old_ids);

                return select count(*) from old_ids;
        end;
$BODY$ language plpgsql;

А вот как я это называю из скрипта PHP:

$sth = $pg->prepare('select quincytrack_clean()');
$sth->execute();
if ($row = $sth->fetch(PDO::FETCH_ASSOC))
        printf("removed %u old rows\n", $row['count']);

Почему я получаю следующую ошибку?

SQLSTATE[42601]: Syntax error: 7 
ERROR:  syntax error at or near "select" at character 9
QUERY:  SELECT  select count(*) from old_ids
CONTEXT:  SQL statement in PL/PgSQL function
"quincytrack_clean" near line 23

Спасибо! Alex

1 Ответ

5 голосов
/ 17 января 2011
RETURN (select count(*) from old_ids);
...