ITPub博客

首页 > 数据库 > 数据库开发技术 > 查询多张表记录数的存储过程

查询多张表记录数的存储过程

原创 数据库开发技术 作者:zhyuh 时间:2006-04-28 13:21:33 0 删除 编辑
下面的存储过程,略加修改后,可以用来查看某个用户所有表的记录数,每个表占用的空间等[@more@]

CREATE FUNCTION row_count (tab_name VARCHAR2) RETURN INTEGER AS
rows INTEGER;
BEGIN
EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM ' || tab_name INTO rows;
RETURN rows;
END;
/


SQL> declare
2 type TabCurTyp is ref cursor;
3 tab_cv TabCurTyp;
4 v_tname varchar2(20);
5 v_sql varchar2(200);
6 v_count number;
7 begin
8 open tab_cv for
9 'select tname from tab where tname in (''EMP'',''DEPT'',''BONUS'')';
10 LOOP
11 fetch tab_cv into v_tname;
12 exit when tab_cv%NOTFOUND;
13 dbms_output.put_line('table name: '||v_tname);
14 v_count := row_count(v_tname);
15 dbms_output.put_line('row number:'||to_char(v_count));
16 dbms_output.put_line(' ');
17 END LOOP;
18 CLOSE tab_cv;
19 end;
20 /

执行结果:
table name: BONUS
row number:0
table name: DEPT
row number:4
table name: EMP
row number:14

PL/SQL procedure successfully completed.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/207/viewspace-831153/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: utl_mail package
请登录后发表评论 登录
全部评论
  • 博文量
    233
  • 访问量
    2061880