获取每张表的记录数

对每张表的记录数,做一下统计,排排序,这么个脚本,其实涉及到PL/SQL的两样很基本的东西,比如 :

1.DYNAMIC SQL的使用语法;

2.SINGLE QUATION MARK的使用;

 

/*
    select table_name
    from user_tables
*/
set serveroutput on ;
declare
    cursor  tabCursor  is (select table_name from user_tables) ;
    tabName            varchar2(200) ;
    nRows              number(9) ;
    tmpSQL             varchar2(2000) ;
begin
    for very_row in tabCursor
    loop
        tabName := very_row.table_name ;
        tmpSQL := ' insert into tabrows( table_name ) values( '''
                    ||tabName||''') ' ;
        Execute Immediate tmpSQL ;
      
       
 
        tmpSQL := ' SELECT COUNT(*) AS RS  from '||tabName ;
        Execute Immediate tmpSQL  INTO nRows ;
  
 
      --  dbms_output.put_line ('nRows : ' || to_char(nRows) ) ;
 
        tmpSQL := ' update tabRows set nrows= :nRS where table_name= :cTab ';
        Execute Immediate tmpSQL using nRows,tabName ;
         
    end loop ;
    commit ;
end ;

个人理解:

1.  EXECUTE IMMEDIATE使用有三种参数模式:

     1.1   EXECUTE IMMEDIATE INTO variable ,带出单条SQL COMMAND的执行结果;而不使用SQL里嵌入INTO语句;

     1.2   EXECUTE IMMEDIATE RETURING INTO variable ,带出SQL COMMAND有RETURNING子句的结果;

     1.3   EXECUTE IMMEDIATE USING bindVariables:   将绑定参数的值带进SQL COMMAND中执行;

    具体的解释,我参考了PL/SQL  USER GUIDE AND REFERENCE中DYNAMIC SQL的用法,看来ORACLE的文档确实要常看,知道你可以很清楚的知道你要的东西在哪个CATALOG中;

2.  SINGLE QUOTATION MARK的使用:

     单引号用来引用变量值,也可以用来转义,当一条语句开头就是‘  时候,你在该语句中还要引用单引号,必须将单引号转义出来,用法:''表示一个转义的单引号;

 

补充:  for very_row in tabCursor,这条语句隐式的打开了游标;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dbLenis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值