微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

DBMS_METADATA.GET_DDL 过程可以纠正不良的缩进吗?

如何解决DBMS_METADATA.GET_DDL 过程可以纠正不良的缩进吗?

这是获取 DDL 或过程并使其漂亮的命令:

EXEC DBMS_MetaDATA.SET_TRANSFORM_ParaM(DBMS_MetaDATA.SESSION_TRANSFORM,'PRETTY',TRUE);
SELECT DBMS_MetaDATA.GET_DDL('PROCEDURE',UPPER('LOOPPROC'),'MYSCHEMA') FROM DUAL;

这是与输入完全一样的输出,就像上面将 PRETTY 设置为 FALSE 一样。

  CREATE OR REPLACE EDITIONABLE PROCEDURE "MYLANID"."LOOPPROC" (inval NUMBER) 

IS

  tmpvar   NUMBER;
  tmpvar2   NUMBER;
  total     NUMBER;

BEGIN

  tmpvar := 0;
  tmpvar2 := 0;
  total := 0;

  FOR lcv IN 1 .. inval

  LOOP

      total := 2 * total + 1 - tmpvar2;
      tmpvar2 := tmpvar;
      tmpvar := total;

  END LOOP;

  IF inval = 1 THEN
                        DBMS_OUTPUT.put_line ('IN IF TRUE branch,inval = ' || inval);
DBMS_OUTPUT.put_line ('IN IF TRUE branch,inval is still = ' || inval);
  ELSE
     DBMS_OUTPUT.put_line ('IN ELSE,inval = ' || inval);
  END IF;
   

  DBMS_OUTPUT.put_line ('TOTAL IS: ' || total);

END loopproc;

注意 IF - THE - ELSE 子句是如何像蛇河一样缩进的。

有没有办法让程序更传统地缩进?

解决方法

我也对可以从 .net 调用的开源开放。我正在考虑作为最后的手段使用 Selenium 来利用执行 sql 格式的免费网站,但只是作为最后的手段。

想法:SQL Developer 已经内置了 formatting capabilities 并允许设置多个选项。

然后使用:Command-Line Interface for SQL Developer

对于某些操作,您可以从命令行调用 SQL Developer 作为图形用户界面的替代方法。要使用命令行界面,请转到 SQL Developer 安装位置下的 sqldeveloper\sqldeveloper\bin 文件夹或 sqldeveloper/sqldeveloper/bin 目录,然后输入 sdcli。

C:\sqldeveloper\sqldeveloper\bin>sdcli

可用功能:

格式:格式任务

调用:

 sdcli format input=<here goes file>

我可以想象构建以下批处理脚本/管道:

  1. 从 Oracle 获取对象定义
  2. 另存为文件
  3. 使用sdcli format
  4. 读回文件内容

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。