sqlplus 你不知道的sqlplus

最近工作中需要编个脚本,其中有些技巧,贡献出来,不敢苟藏!
一、有个脚本,有11万条插入语句,在sqlplus中执行,花费时间很长,怎办办?
答:增加设置: set echo off  feedback off  .
二、sql脚本中有&,需要转义,作为普通字符处理,怎么办?
答: set define off
三、sqlplus中多行注释有个bug,bug是:/**/ ,如果/*后面没有空白字符,那么sqlplus 不认为这是注释,而是会重复执行上一个语句。这个bug很严重,如果你发现你的sql脚本莫名其妙的重复执行了一遍,就要考虑这个bug了。
四、 正常情况下,在SQLPLUS中输入命令时,可以换行,但不能有空格,否则不能执行,会直接返回到SQL>下。但通过命令设置可以实现语句换行时允许有空行的情况出现。

设置前:


 

五、编写sql脚本的时候,对于有些sql错误需要终止,搞清楚原因,对于有些sql错误需要忽略,怎么办?

答:sqlplus中有开启和忽略的语句,whenever sqlerror continue  whenever sqlerror exit;

六、为了跟踪调试sql脚本的输出日志,需要打印出执行的脚本,怎么做?

用spool  initdata.log,  设置set echo on。一般情况下,脚本里面再执行脚本,默认是不会有打印出要执行的sql来,设置了set echo on,sqlplus在执行一个脚本的时候,会把脚本里面的sql打印到屏幕,方便跟踪调试。

七、在sql脚本中有创建存储过程,包的语句,如果在最后你没有‘/’ ,做为执行,你知道会发生什么吗?很有趣的,自己试试看吧。没有 / ,搞死你的!

八、在边上sql脚本的时候,脚本里面再执行脚本,怎么编写?

下面是我工作中写的一个数据初始化脚本示例:

set heading on  echo on  trimspool on  linesize 120 pagesize 900  define off

spool initdata.log      --有日志,就好跟踪调试

--whenever oserror exit;


whenever sqlerror exit;

 conn intra/intra123;

  @./02-INTRA/1.ddl/1.table/INTRA.sql    --sql脚本里面在套脚本,当脚本有上百个的时候,方便性体现出来了。

 whenever sqlerror continue;    --对存储过程,区别对待

  @./02-INTRA/1.ddl/2.procedure/1.prod_add_proc_log.sql  

  @./02-INTRA/1.ddl/2.procedure/2.prod_member_flow.sql  

  @./02-INTRA/1.ddl/2.procedure/3.prod_member_fee.sql  

 whenever sqlerror exit;     --对存储过程,区别对待

prompt intra initdata begin

  set echo off feedback off sqlblanklines on    --对于插入语句,区别对待,执行时间快

  @./02-INTRA/2.initdata/RES_MENU.sql  

  @./02-INTRA/2.initdata/USERS.sql  

  commit;

  prompt intra initdata end;

set echo on feedback on sqlblanklines off;  --对于插入语句,区别对待

spool off;

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

转载于:http://blog.itpub.net/30393770/viewspace-2125617/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值