ITPub博客

首页 > 数据库 > Oracle > [20220331]如何调整sql语句.txt

[20220331]如何调整sql语句.txt

原创 Oracle 作者:lfree 时间:2022-04-01 08:42:14 0 删除 编辑

[20220331]如何调整sql语句.txt
--//生产环境查看视图定义,在我的机器经过toad格式化查看的语句如下.

CREATE OR REPLACE FORCE VIEW ETC_ZY_LISTDETAIL
...
)
BEQUEATH DEFINER
AS

SELECT t1.fphm AS busno
      ,                           /*业务流水号*/
       t2.jlxh AS listdetailno
      ,                           /*明细流水号*/
       t2.fyxm AS chargecode
      ,                          /*收费项目代码*/
       t3.sfmc AS chargename
      ,                          /*收费项目名称*/
       '' AS prescribecode
      ,                          /*处方编码*/

--//出现这样的情况,看着非常不舒服,主要原因我定义toad格式化sql语句模式逗号在前面.
--//参考链接: [20150304]关于sql格式化问题.txt =>http://blog.itpub.net/267265/viewspace-1448016/

--//也就是实际上sql语句如下:
SELECT empno ,       /* empno  */
       ename ,       /* ename  */
       job ,         /* job    */
       mgr ,         /* mgr    */
       hiredate ,    /* hiredate */
       sal ,         /* sal     */
       comm ,        /* comm    */
       deptno        /* deptno  */
  FROM emp
 WHERE hiredate = TO_DATE ( :b1, 'yyyy-mm-dd');

--//经过toad格式化后查看如下,看上去变得更长了,阅读也不方便:
/* Formatted on 2022/4/1 8:18:53 (QP5 v5.269.14213.34769) */
SELECT empno
      ,                                                           /* empno  */
       ename
      ,                                                           /* ename  */
       job
      ,                                                           /* job    */
       mgr
      ,                                                           /* mgr    */
       hiredate
      ,                                                         /* hiredate */
       sal
      ,                                                          /* sal     */
       comm
      ,                                                          /* comm    */
       deptno                                                    /* deptno  */
  FROM emp
 WHERE hiredate = TO_DATE ( :b1, 'yyyy-mm-dd');

--//如何调整呢?测试看看vim下如何快速实现:

--//定义修改范围,使用m命令标识a,b 然后执行如下:
:'a,'bg/^\s*,/s/$/,/
:'a,'bg/^\s*,/s///

--//第一步替换开头含有,的行在结尾加入, .
--//第二步删除开头的逗号.

--//处理后情况如下:
SELECT empno
                                                           /* empno  */,
       ename
                                                           /* ename  */,
       job
                                                           /* job    */,
       mgr
                                                           /* mgr    */,
       hiredate
                                                         /* hiredate */,
       sal
                                                          /* sal     */,
       comm
                                                          /* comm    */,
       deptno                                                    /* deptno  */
  FROM emp
 WHERE hiredate = TO_DATE ( :b1, 'yyyy-mm-dd');

--//然后在toad sql编辑器里面格式化处理,最后显示如下:
/* Formatted on 2022/4/1 8:20:04 (QP5 v5.269.14213.34769) */
SELECT empno
      /* empno  */
      ,ename
      /* ename  */
      ,job
      /* job    */
      ,mgr
      /* mgr    */
      ,hiredate
      /* hiredate */
      ,sal
      /* sal     */
      ,comm
      /* comm    */
      ,deptno                                                    /* deptno  */
  FROM emp
 WHERE hiredate = TO_DATE ( :b1, 'yyyy-mm-dd');
--//感觉也好不到那里去。

--//处理如下:
:'a,'bg/\s*,/j

--//处理如下:
:'a,'bs+/\*+--+
:'a,'bs+\*/++
:'a,'bs/\s*$//

--//最后结果如下:
SELECT empno   -- empno
      ,ename -- ename
      ,job -- job
      ,mgr -- mgr
      ,hiredate -- hiredate
      ,sal -- sal
      ,comm -- comm
      ,deptno    -- deptno
      FROM emp
 WHERE hiredate = TO_DATE ( :b1, 'yyyy-mm-dd');

--//如果这样在toad下格式化,结果如下,感觉使用--在结尾这样的风格更好,不会折行:
SELECT empno                                                          -- empno
      ,ename                                                          -- ename
      ,job                                                              -- job
      ,mgr                                                              -- mgr
      ,hiredate                                                    -- hiredate
      ,sal                                                              -- sal
      ,comm                                                            -- comm
      ,deptno                                                        -- deptno
  FROM emp
 WHERE hiredate = TO_DATE ( :b1, 'yyyy-mm-dd');


--//主要最近在优化sql语句,看各类开发写sql语句超长,风格各异,不可能统一风格以及习惯,以及改正开发不好习惯.
--//我发现我们团队好像有人写的sql无论多长就是一行.佩服!!
--//记录下来,避免在这些细节上浪费时间,在查看自己喜欢的风格sql语句时心情更好,定位问题更快.
--//比如链接[20220331]为什么不使用索引.txt 的例子就是类似的情况,浪费大量的时间.
--//^_^,感觉自己有一点点强迫症.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2885299/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4019
  • 访问量
    7997851