大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
可以从表user_tables中查询。
专注于为中小企业提供成都做网站、网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业富裕免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了近1000家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
select sum(num_rows) from user_tables ;
就是显示用户所有表的行数其中num_rows是每个表的行数,用sum加总一下,就是当前用户所有表的总行数。
但因为user_tables中的数据不是实时统计,会有时间差,所以以上Sql统计得到的结果与实际会存在一定误差。
如果数据库是10g及以上版本,可以使用dbms_utility.format_error_backtrace(),这个函数能够返回错误行,可以套用以下格式:
create or replace procedure prc_test(参数) is
v_no number;
begin
select no into v_no from zrp;
exception
when others then
dbms_output.put_line('SQL CODE:'||sqlcode||chr(10)||
sqlerrm||chr(10)||
dbms_utility.format_error_backtrace());
end;
这样写的好处是,当程序发成异常,呗exception捕获后,就会打印出错误信息及发生错误的行号
rownum:对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且rownum不能以任何表的名称作为前缀。 example: select rownum as 行号,first_name as 员工姓名 from hr.employees select rownum as 行号,first_name as 员工姓名 from hr.employees order by 员工姓名; 序号不会重新排的,(所以需要嵌套一层子查询来抽取排序好的数据)原因下面解释。 例1:查询各个部门的MANAGER(经理)中谁的工资最低 hrselect * from(select t1.manager_id as 员工编号,t2.first_name as 员工姓名,t2.salary as 工资 from hr.departments t1 join hr.employees t2 on t1.manager_id=t2.employee_id order by t2.salary) where rownum=1; *******************************************************************************where rownum=1;表示取第一行, rownum=1也是但 rownum=2、2、=2什么的是不行的只能用=、、=1,而且排序好后得用一个子查询原因:1.因为ROWNUM是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集)。查到就加上了,所以排序就是原先的rownum值了。2.rownum j就是对符合条件结果的序列号。它总是从1开始排起的。所以你选出的结果不可能没有1,而有其他大于1的值。3.他是不存在的,只有在每次select后才会重新分配,所以加个子查询重新分配rownum*******************************************************************************例2:查询工资最高的5个人的信息,按工资降序排列:hrselect * from(select t2.department_name as 部门名称,t1.first_name as 员工姓名,t1.salary as 工资from employees t1left outer join departments t2 on t2.department_id=t1.department_idorder by t1.salary desc)where rownum=5******************************************************************************* 但是如果想要提取出第m行的数据或者中间几条数据该怎么办?rownum=m是不行的这里可以再用嵌套的子查询例3:查询工资从高到低排名第2-5个人的信息 hr. select 部门名称,员工姓名,工资 from --第一层 ( select rownum as no,部门名称,员工姓名,工资 from --第二层,这里的rownum得有别名,不然外层和其本身的重名(select t2.department_name as 部门名称, -- 第三层 t1.first_name as 员工姓名,t1.salary as 工资 from employees t1 left outer join departments t2 on t2.department_id=t1.department_id order by t1.salary desc)where rownum=5 --取出前五行 )