2014-04-25 3 views
0
Create Or Replace Function totalRecords (tablename TEXT) Returns integer as $total$ 
    Declare 
     total integer; 

     Begin 
     select count (*) into total from''|| tablename ||' 'where now() - cast(date_dimension_year||'-'||date_dimension_month||'-'||date_dimension_day AS date) < INTERVAL '3 months' ; 
     RETURN total; 
     END; 
$total$ LANGUAGE plpgsql; 

나는 주어진 조건에 맞는 레코드를 DB에서 검사하여 텍스트 파일에 결과를 출력해야하는 작업을 만듭니다. 위 붙여 넣은 코드는 아무런 성공도없이 놀고 있습니다. 구문 오류가 발생했습니다. Postgres DB를 사용하고 있습니다.Postgres - 매개 변수로 테이블 이름을 전달하고 결과를 파일에 저장합니다.

+0

[테이블 이름을 PostgreSQL 함수 매개 변수로] 동적 데이터베이스 –

+0

이 필요합니다 (http://stackoverflow.com/questions/10705616/table-name-as-a-postgresql-function-parameter) –

답변

0

은 내가 나를 위해 일한 끝과 인용 (')의 적절한 폐쇄쪽으로 정수 전체를 할당했다

Begin 
execute 'select count(*) from ' ||tablename|| 
' where cast(date_dimension_year || ''-'' || date_dimension_month || ''-''||date_dimension_day as date) 
not between (current_date - interval ''13 months'') and current_date' into total ; 

문제를 이런 식으로 분류. (난 그냥 기능의 일부를 붙여 어디에서 문제가 있음)

도움 주셔서 감사합니다.