yunsh206

회원가입로그인

컴퓨터 Pro*C 에서 DBMS_STAT 사용하기

2007.12.06 14:14

RanomA 조회 수:1230

DBMS_STAT 패키지는 일종의 오라클 내부의 프로시저라고 생각하면 된다.

따라서 Pro*C에서 Dynamic Query를 사용하지 않고 바로 EXEC SQL로 처리하려면

아래와 같이 EXECUTE를 쓰면 된다.


EXEC SQL EXECUTE
    BEGIN
       SYS.DBMS_STATS.GATHER_TABLE_STATS (
          OwnName           => 'OWNER'
         ,TabName           => 'TABLE_NAME'
         ,PartName          => 'PARTITION_NAME'
         ,Granularity       => 'PARTITION'
         ,Estimate_Percent  => 10
         ,Block_sample      => TRUE
         ,Method_Opt        => 'FOR ALL INDEXED COLUMNS SIZE AUTO '
         ,Degree            => 4
         ,Cascade           => TRUE
         ,No_Invalidate     => FALSE);
    END;
END-EXEC;



Dynamic Query는 아래와 같은 방식으로 한다.


sprintf( sql_text,
" BEGIN                                                                \n
     SYS.DBMS_STATS.GATHER_TABLE_STATS (                               \n
        OwnName           => 'NACFCV'                                  \n
       ,TabName           => '%s'                                      \n
       ,PartName          => '%s'                                      \n
       ,Granularity       => 'PARTITION'                               \n
       ,Estimate_Percent  => 10                                        \n
       ,Block_sample      => TRUE                                      \n
       ,Method_Opt        => 'FOR ALL INDEXED COLUMNS SIZE AUTO '      \n
       ,Degree            => 4                                         \n
       ,Cascade           => TRUE                                      \n
       ,No_Invalidate     => FALSE);                                   \n
  END;"
, table_name
, partition_name);

EXEC SQL EXECUTE IMMEDIATE :sql_text;