Oracle查詢資料庫中所有表的記錄數

2021-09-08 07:36:20 字數 1886 閱讀 3266

方法一:

首先建立乙個計算函式

1

create

orreplace

function count_rows(table_name in

varchar2

,2 owner in

varchar2

default

null)3

return

number

4 authid current_user5is

6 num_rows number

;7 stmt varchar2(2000);8

begin

9if owner is

null

then

10 stmt :=

'select count(*) from "

'||table_name||'"

';11else

12 stmt :=

'select count(*) from "

'||owner||

'"."

'||table_name||'"

';13endif;

14execute immediate stmt into

num_rows;

15return

num_rows;

16end;

然後通過計算函式進行統計

select table_name, count_rows(table_name) nrows from user_tables

獲取要統計的值

方法二:

1

select t.table_name,t.num_rows from user_tables t

檢視記錄數,但是num_rows儲存的是上次分析後的值,不準確,要使用該方法,必須分析後才可以試用

完成的語句為

1

declare

2 v_tname varchar(50

);3 v_sqlanalyze varchar(500

);4 v_num number

;5 v_sql varchar(500);6

cursorc17

is8select table_name from

user_tables;

9begin

10open

c1;11

loop

12fetch c1 into

v_tname;

13if c1%found then

14 v_sqlanalyze :=

'analyze table

'||v_tname||

'estimate statistics';

15execute

immediate v_sqlanalyze;

16 v_sql :=

'select num_rows from user_tables where table_name =upper(

'''||v_tname||

''')';

17execute immediate v_sql into

v_num;

18 dbms_output.put_line('

表名:

'||v_tname||

'行數: '||

v_num);

19else

20exit;21

endif;22

endloop;

23end;

posted on 2017-05-10 15:17收藏

Oracle查詢資料庫中所有的表名稱

1.查詢資料庫中所有的表名稱和每張表所對應的資料條數 select t.table name,t.num rows from user tables t 此處需要注意的是 在查詢每張表所對應的資料條數時會與利用sql select count from tablename 所查詢出來的結果有所不同,...

查詢資料庫中所有的表

select from sysobjects where xtype u 查詢當前資料庫下所有使用者建立的表 xtype char 2 物件型別。可以是下列物件型別中的一種 c check 約束 d 預設值或 default 約束 f foreign key 約束 l 日誌 fn 標量函式 if 內...

查詢資料庫中所有表名,查詢表中所有欄位名

mysql 1.查詢資料庫中所有表名稱 select table name from information schema.tables where table schema 資料庫名稱 包含檢視 select table name from information schema.tables wh...