统计oracle分区表各个分区的数据条数


建立分区表LOAN,插入数据

create table LOAN
(
  name                VARCHAR2(30),
  BILL_NO             VARCHAR2(30) not null,
  DATE1               NUMBER(8) not null
)
PARTITION BY RANGE(date1) INTERVAL(100)
  (
    PARTITION  PART1 VALUES LESS THAN (20190601)      
   tablespace USERS
   pctfree 10
    initrans 1
    maxtrans 255
    storage
    (
      initial 20M
      next 1M
      minextents 1
      maxextents unlimited
    )
  );

insert into loan (bill_no,date1) values ('wq3333243',20190209);
insert into loan (bill_no,date1) values ('wq3333243',20200209);
insert into loan (bill_no,date1) values ('wq3333243',20200215);
insert into loan (bill_no,date1) values ('wq3333243',20200225);
insert into loan (bill_no,date1) values ('wq3333666',20220305);
insert into loan (bill_no,date1) values ('wq3333666',20220405);
insert into loan (bill_no,date1) values ('wq3333545',20220605);
insert into loan (bill_no,date1) values ('wq3333545',20220601);
insert into loan (bill_no,date1) values ('wq3333545',20220616);
insert into loan (bill_no,date1) values ('wq3333545',20220643);
insert into loan (bill_no,date1) values ('wq3333545',20220703);
insert into loan (bill_no,date1) values ('wq3333545',20220916);

使用pl/sql代码统计数量

 1 declare
 2       CURSOR CUR_01 IS select * from user_tab_partitions where table_name='LOAN';
 3       CUR_02 CUR_01%ROWTYPE; 
 4       a1 number(2);
 5       sql01 varchar2(150);
 6      
 7     BEGIN 
 8       FOR CUR_02 IN CUR_01 LOOP  
 9          
10        sql01 := 'select count(1)  from LOAN partition('||CUR_02.PARTITION_NAME||') ';
11        EXECUTE IMMEDIATE sql01 INTO a1 ;
12         DBMS_OUTPUT.PUT_LINE('分区名:'||CUR_02.PARTITION_NAME ||'  数量:'|| a1);
13       END LOOP
14   end;

注意第10行要使用动态sql,不能直接传分区名,结果

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM