[20210419]避免冗余的输出.txt

来源:这里教程网 时间:2026-03-03 16:38:09 作者:

[20210419]避免冗余的输出.txt --//别人的问的问题,如何避免调式优化sql语句时大量的输出信息,顺便总结概括几种方法。 1.使用set feedback only: --//12c R2开始sqlplus可以设置set feedback only。 --//更高的版本还可以显示sql_id.  设置 set feedback only sql_id --//例子: SYS@dyhis1> set feedback only sql_id SYS@dyhis1> select sysdate from dual ; SYSDATE ------------------- 1 row selected. SQL_ID: f0wzs9nc663bn SYS@dyhis1> set head off SYS@dyhis1> select sysdate from dual ; 1 row selected. SQL_ID: f0wzs9nc663bn --//缺点至少12c以上的sqlplus才支持这样的设置。还有就是看执行计划时要切换回来,比较麻烦。 2.使用set termout off以及set termout on。 --//这也是我常用的调式方法,例子: set termout off set sqlblanklines on alter session set current_schema=XXX; alter session set statistics_level=all; select sysdate from dual ; set termout on --//缺点就是必须将sql语句写在脚本里面才能正常使用,如果你在sqlplus一个一个执行是无效的。 --//通过例子说明: SCOTT@book> set termout off SCOTT@book> select sysdate from dual ; SYSDATE ------------------- 2021-04-19 16:49:56 --//在sqlplus里面直接输入的语句无效。 SCOTT@book> @ dpc '' '' SCOTT@book> @ dpc '' '' --//显示执行计划没有输出。 --//还有就是如果执行脚本过程中按ctrl+c终端,必须有意识地输入set termout on打开,有时候在调式时很让人疑惑。 3.在不影响执行计划的情况下修改sql语句。 select * from emp ; --// 修改如下,主要目的在基本不修改执行计划的修改语句,减少输出信息。 select sum(sal) from emp ; --//还有就是使用提示MATERIALIZE。 4.编辑脚本例子如下: @ 10046on 12 begin   for r in ( select * from emp ) loop     null;   end loop; end; / @ 10046off --//这样方法我基本不用,我开始学习oracle时候见过别人这个用过。 begin   for r in ( &&sql ) loop     null;   end loop; end; / --//缺点是语句必须写在一行。 总结: --//我现在基本最多的是第2种方法。

相关推荐