17,377
社区成员
发帖
与我相关
我的任务
分享
declare
v_tName varchar(50);
v_sqlanalyze varchar(500);
v_num number;
v_sql varchar(500);
cursor c1
is
select table_name from user_tables;
begin
open c1;
loop
fetch c1 into v_tName;
if c1%found then
v_sqlanalyze :='analyze table '||v_tName||' estimate statistics';
execute immediate v_sqlanalyze;
v_sql := 'select NUM_ROWS from user_tables where table_name =upper('''||v_tName||''')';
execute immediate v_sql into v_num;
dbms_output.put_line('表名: '||v_tName||' 行数: '||v_num);
else
exit;
end if;
end loop;
end;
declare
v_tName varchar(50);
v_sqlanalyze varchar(500);
v_num number;
v_sql varchar(500);
cursor c1
is
select table_name from user_tables;
begin
open c1;
loop
fetch c1 into v_tName;
if c1%found then
v_sqlanalyze :='analyze table '||v_tName||' estimate statistics';
v_sql := 'select NUM_ROWS from user_tables where table_name =upper('''||v_tName||''')';
execute immediate v_sql into v_num;
dbms_output.put_line('表名: '||v_tName||' 行数: '||v_num);
else
exit;
end if;
end loop;
end;
SQL> declare
2 cursor c1 is select tname from tab where tabtype = 'TABLE';
3 RecordNumber number;
4 begin
5 dbms_output.put_line('TABLE NAME'||' '||'RECORD NUMBER');
6 for mytable in c1 loop
7 execute immediate 'select count(*) from '||mytable.tname into RecordNumber;
8 dbms_output.put_line(mytable.tname||rpad(' ',20-length(mytable.tname),chr(32))||RecordNumber);
9 end loop;
10 end;
11 /
TABLE NAME RECORD NUMBER
DEPT 4
EMP 14
BONUS 0
SALGRADE 5
EMP1 16
T1 28671
PL/SQL procedure successfully completed
SQL> declare
2 cursor c1 is select tname from tab where tabtype = 'TABLE';
3 RecordNumber number;
4 begin
5 dbms_output.put_line('TABLE NAME'||' '||'RECORD NUMBER');
6 for mytable in c1 loop
7 execute immediate 'select count(*) from '||mytable.tname into RecordNumber;
8 dbms_output.put_line(mytable.tname||lpad(mytable.tname,18,chr(32))||RecordNumber);
9 end loop;
10 end;
11 /
TABLE NAME RECORD NUMBER
DEPT DEPT4
EMP EMP14
BONUS BONUS0
SALGRADE SALGRADE5
EMP1 EMP116
T1 T128671
PL/SQL procedure successfully completed
SQL> declare
2 cursor c1 is select tname from tab where tabtype = 'TABLE';
3 RecordNumber number;
4 sqlText varchar(100);
5 begin
6 for mytable in c1 loop
7 execute immediate 'select count(*) from '||mytable.tname into RecordNumber;
8 dbms_output.put_line(mytable.tname||' '||RecordNumber);
9 end loop;
10 end;
11 /
DEPT 4
EMP 14
BONUS 0
SALGRADE 5
EMP1 16
T1 28671
PL/SQL procedure successfully completed