设置前:
五、编写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/