[20150304]關於sql格式化問題.txt

lfree發表於2015-03-04

[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,一般修改如下:

SELECT empno,
       ename,
       job,
       mgr,
       --hiredate,
       sal,
       comm,
       deptno
  FROM emp
WHERE hiredate = TO_DATE ( :b1, 'yyyy-mm-dd');

--這種方式註解最後一個欄位就有問題。
SELECT empno,
       ename,
       job,
       mgr,
       hiredate,
       sal,
       comm ,
       --deptno
  FROM emp
WHERE hiredate = TO_DATE ( :b1, 'yyyy-mm-dd');

--今天看書以及blog,才明白逗號在前面這樣註解更加科學,實際上許多人都是這種模式。因為一般前面第1個欄位很少選擇註解。

SELECT empno
      ,ename
      ,job
      ,mgr
      ,hiredate
      ,sal
      ,comm
--    ,deptno
  FROM emp
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
  FROM emp
WHERE hiredate = TO_DATE ( :b1, 'yyyy-mm-dd')
 
--如果也想像上面這樣,還可以修改引數
view =>toad options ... => formatter
oracle formatter options=>List Arrangements=>List Defaults ,List item的column修改為1。

但是這樣的格式化如下:
SELECT empno
      ,ename
      ,job
  FROM emp
WHERE hiredate = TO_DATE ( :b1
                          ,'yyyy-mm-dd');

--我的建議還是保持不動。 List item的column修改為3。 (修改為2,也可以避免to_date折行)

SELECT empno, ename, job
  FROM emp
WHERE hiredate = TO_DATE ( :b1, 'yyyy-mm-dd');


另外把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;
/

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-1448016/,如需轉載,請註明出處,否則將追究法律責任。

相關文章