Method One:
First, create a computational function
>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>
Create or Replace function count_rows (table_name in VARCHAR2,
Owner in varchar2 default null)
return number
Authid Current_User
Is
Num_rows number;
stmt VARCHAR2 (2000);
Begin
If owner is NULL then
stmt: = ' SELECT count (*) from ' | | table_name| | ' "';
Else
stmt: = ' SELECT count (*) from ' | | owner| | ' "." ' | | table_name| | ' "';
End If;
Execute immediate stmt into num_rows;
return num_rows;
End
and then compute the function for statistics .
Select TABLE_NAME, COUNT_ROWS (table_name) nrows from User_tables
Get the value to be counted
Method Two:
Select T.table_name,t.num_rows from User_tables t
View the number of records, but Num_rows is stored after the last analysis of the value, inaccurate, to use this method, you must analyze before you can try
The completed statement is
DECLARE
v_tname varchar (% );
V_sqlanalyze varchar (% );
V_num number;
V_sql varchar ( );
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 (' Table name: ' | | v_tname| | ' Number of lines: ' | | V_num);
Else
exit;
End If;
End Loop;
End;