2011-01-17 1 views
2

1つの以上PL/pgSQL質問で私を助けてください。PostgreSQL:テーブルからselect count(*)を返します。

私はPHPスクリプトの実行など、毎日cronジョブを持っており、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 

ありがとう!アレックス

答えて

3
RETURN (select count(*) from old_ids); 
+0

痛い、ありがとうございました - 今私は愚かな感じ –

関連する問題