天天看點

[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;

/