网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.查看本用户下的各种对象的SQL脚本.
.ASP 中通过OLEDB访问Oracle的代码.
.Oracle Database 10g 中新特性.
.用SQL更新数据.
.使用Rman进行不完全恢复.
.PL/SQL异常处理.
.ORACLE SQL性能优化系列 (十四) .
.Oracle XQuery查询、构建和转换X.
.专家在线:全面介绍恢复Oracle数.
.实现数据库表空间的备份或迁移.
.改变或关闭Oracle XDB的ftp和htt.
.使用快速失败转移还是灾难保护.
.Oracle9iR2在红帽高级服务器版2..
.Oracle和SQL Server 追求完美还是.
.Oracle丰富认证体系 新增资深专家.
.实例讲解删除表空间时存在的效率.
.[范例]如何编写排序菜单sort_pop.
.得到电影而不是图片:闪回版本查.
.SQL链接Oracle,数据长度不定的问.
.显式游标范围大小和复杂间隔的相.

如何利用DBMS_SQL包和游标计算当前用户下所有表的行数

发表日期:2008-2-9



  系统环境: 1、操作系统:windows 2000,机器内存128M
  2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版
  3、安装路径:C:\ORACLE
  
   实现方法:
   
  SQL> conn scott/tiger
  SQL> set serveroutput on size 1000000
  SQL>
  SQL> DECLARE
   2 t_c1_tname user_tables.table_name%TYPE;
   3 t_command varchar2(200);
   4 t_cid integer;
   5 t_total_records number(10);
   6 stat integer;
   7 row_count integer;
   8 t_limit integer := 0; --限制只取出记录大于0的表的情况
   9 cursor c1 is select table_name from user_tables order by table_name; --查出所有表的名字
   10 BEGIN
   11 t_limit := 0;
   12 open c1;
   13 loop
   14 fetch c1 into t_c1_tname; --取出一个表名
   15 exit when c1%NOTFOUND; --假如游标记录取完,退出循环
   16 t_command := 'SELECT COUNT(0) FROM 't_c1_tname; --定义SQL命令
   17 t_cid := DBMS_SQL.OPEN_CURSOR; --创建一个游标
   18 DBMS_SQL.PARSE(t_cid,t_command,dbms_sql.native); --向服务器发出一个语句并检查这个语句的语法和语义错误
   19 DBMS_SQL.DEFINE_COLUMN(t_cid,1,t_total_records); --定义将从FetchRows()函数接收数据的变量的数据类型与大小
   20 stat := DBMS_SQL.EXECUTE(t_cid); --执行此语句,因为执行的是查询,所以必须跟着Fetch_Rows函数并为单个行检索数据
   21 row_count := DBMS_SQL.FETCH_ROWS(t_cid); --取回一行数据放入局部缓冲区
   22 DBMS_SQL.COLUMN_VALUE(t_cid,1,t_total_records); --返回调用FetchRows()取回的一列的值,这一列的值存储在t_total_records中
   23 if t_total_records > t_limit then
   24 DBMS_OUTPUT.PUT_LINE(rpad(t_c1_tname,55,' ')
   25 to_char(t_total_records,'99999999')' record(s)');
   26
   27 end if;
   28 DBMS_SQL.CLOSE_CURSOR(t_cid);
   29 end loop;
   30 close c1;
   31 END;
   32 /
  DEPT 4 record(s)
  EMP 14 record(s)
  SALGRADE 5 record(s)
  
  PL/SQL 过程已成功完成。
上一篇:MSSQL7.0SysbaseAccess向Oracle8i移植 人气:506
下一篇:查看各种对象的SQL 人气:560
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐