天天看点

[20150304]关于sql格式化问题.txt

[20150304]关于sql格式化问题.txt

--今天看书学习了sql格式化技巧。

--我以前遇到的sql语句很长,喜欢抽取在toad下格式化。一般格式化成如下。

SELECT empno,

       ename,

       job,

       mgr,

       hiredate,

       sal,

       comm,

       deptno

  FROM emp

WHERE hiredate = TO_DATE ( :b1, 'yyyy-mm-dd');

--这样的问题假设要取消不显示hiredate,一般修改如下:

       --hiredate,

--这种方式注解最后一个字段就有问题。

       comm ,

       --deptno

--今天看书以及blog,才明白逗号在前面这样注解更加科学,实际上许多人都是这种模式。因为一般前面第1个字段很少选择注解。

SELECT empno

      ,ename

      ,job

      ,mgr

      ,hiredate

      ,sal

      ,comm

--    ,deptno

WHERE hiredate = TO_DATE ( :b1, 'yyyy-mm-dd')

--这样注解最后1个字段就没有问题。

toad下如下修改呢?

view =>toad options ... => formatter

oracle formatter options=>List Arrangements=>, commas ,选择Leading风格就ok了。

如果select显示少于等于3个字段,显示如下:

SELECT empno, ename, job

--如果也想像上面这样,还可以修改参数

oracle formatter options=>List Arrangements=>List Defaults ,List item的column修改为1。

但是这样的格式化如下:

WHERE hiredate = TO_DATE ( :b1

                          ,'yyyy-mm-dd');

--我的建议还是保持不动。 List item的column修改为3。 (修改为2,也可以避免to_date折行)

另外把parentheses选择6.这样也是上面的原则:

/* Formatted on 2015/3/4 12:13:37 (QP5 v5.252.13127.32867) */

BEGIN

   SYS.DBMS_STATS.GATHER_TABLE_STATS

   (

      OwnName            => 'SCOTT'

     ,TabName            => 'DEPT'

     ,Estimate_Percent   => NULL

     ,Method_Opt         => 'FOR ALL COLUMNS SIZE 1 '

     ,Degree             => 4

     ,Cascade            => TRUE

     ,No_Invalidate      => FALSE

   );

END;

/