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