如何解决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>
我可以想象构建以下批处理脚本/管道:
- 从 Oracle 获取对象定义
- 另存为文件
- 使用
sdcli format
- 读回文件内容
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。