引言:

我们都知道任何一种语言,都应该讲究一定的规范,因为优秀的代码通常都是先让人读懂,其次才是机器读懂。否则没有任何规范和解释说明的代码,后期维护会增加很多成本,即使是开发者自己维护有时后也会忘了个中逻辑和开发思路。SQL也是如此,尤其是存储过程、自定义函数里的片段更为重要,笔者目前在维护的是我们公司PMD一期的一个项目,里面的存储过程,最长的有上千行,虽然解释也有些,但是变量命名规范什么的,修改存储过程的时候,真是苦不堪言。貌似扯得远了,说正题吧PL/SQL中正好有个代码优化的功能,里面可以定义规则,但是始终得不到自己想要的效果,于是乎google在博客里下了些所谓的PL/SQL美化模板,结果效果还是一样的渣渣。趁着午休的时候研究了下.br的文件,想自己定义自己的规范,改一个属性就对照下.br文件的改变,大概了解了里面的语法如下(附件:plsql.br):

Version=1
RightMargin=100//右边距,间接决定了一行的长度
Indent=2//缩进2个字符
UseTabCharacter=FALSE//使用跳格字符?
TabCharacterSize=2//跳格字符大小
AlignDeclarationGroups=TRUE//是否对齐变量声明
AlignAssignmentGroups=TRUE//是否对齐变量赋值部分
KeywordCase=1//关键字的风格 0:不变  1 小写 2 大写 3 首字母大写
IdentifierCase=3//标识符的风格 0:不变  1 小写 2 大写 3 首字母大写
UseSpecialCase=TRUE//使用特殊大小写?
ItemList.Format=1//元素的格式 0:在同一行上  1:尽量放在同一行  2:一个元素一行  3 :自适应
ItemList.Align=TRUE//是否对齐
ItemList.CommaAfter=TRUE//是否在元素后加上逗号
ItemList.AtLeftMargin=FALSE
EmptyLines=0//空行的处理 0:移除 1:并为一行 2:保持原样
ThenOnNewLine=TRUE//then 重起一行
LoopOnNewLine=TRUE//loop 重起一行
//数据操作语句时
DML.LeftAlignKeywords=TRUE//关键字左对齐
DML.LeftAlignItems=FALSE//元素左对齐(包括数据库表字段、表名什么的)
DML.OnOneLineIfPossible=TRUE//如果可能在同一行上
DML.WhereSplitAndOr=TRUE// and/or另起一行
DML.WhereAndOrAfterExpression=FALSE//and/or在表达式后面
DML.WhereAndOrUnderWhere=TRUE //and/or在where 后
DML.JoinSplitBeforeOn=TRUE //连接时在on之前分成两行
//插入语句
DML.InsertItemList.Format=1//元素的格式 0:在同一行上  1:尽量放在同一行  2:一个元素一行  3 :自适应
DML.InsertItemList.Align=FALSE//是否对齐
DML.InsertItemList.CommaAfter=TRUE//在元素后加上逗号
DML.InsertItemList.AtLeftMargin=FALSE//元素在左边
DML.SelectItemList.Format=1//元素的格式 0:在同一行上  1:尽量放在同一行
DML.SelectItemList.Align=TRUE
DML.SelectItemList.CommaAfter=TRUE
DML.SelectItemList.AtLeftMargin=FALSE
DML.UpdateItemList.Format=1
DML.UpdateItemList.Align=TRUE
DML.UpdateItemList.CommaAfter=TRUE
DML.UpdateItemList.AtLeftMargin=FALSE
ParameterDeclarationList.Format=1
ParameterDeclarationList.Align=TRUE
ParameterDeclarationList.CommaAfter=TRUE
ParameterDeclarationList.AtLeftMargin=FALSE
RecordFieldList.Format=1
RecordFieldList.Align=TRUE
RecordFieldList.CommaAfter=TRUE
RecordFieldList.AtLeftMargin=FALSE
SplitAndOr=FALSE
AndOrAfterExpression=FALSE
[SpecialCase]

Oracle标识符命名规则:

当在 PL/SQL 中使用标识符定义变量、常量时,标识符名称必须以字符开始,并且长度不能超过 30 个字符。另外,为了提高程序的可读性,Oracle 建议用户按照以下规则定义各种标识符:
--当定义变量时,建议使用 v_ 作为前缀,例如 v_sal, v_job等。
--当定义常量时,建议使用 c_ 作为前缀,例如 c_rate 。
--当定义游标时,建议使用 _cursor 作为后缀,例如 emp_cursor 。
--当定义例外时,建议使用 e_ 作为前缀,例如 e_integrity_error。
--当定义 PL/SQL 表类型时,建议使用 _table_type 作为后缀,例如 sal_table_type。
--当定义 PL/SQL 表变量时,建议使用 _table 作为后缀,例如 sal_table。
--当定义 PL/SQL 记录类型时,建议使用 _record_type 作为后缀,例如 emp_record_type。
--当定义 PL/SQL 记录变量时,建议使用 _record 作为后缀,例如 emp_record。

PS:有那位大神知道怎么定义更加完美的美化规则文件或者可以分享下吗?我想要的效果是数据表名和字段名 都按照“驼峰”的规范,而别名则一律小写,定义的变量也按照”驼峰“。简单来说就是能不能在辨识符中区分出 数据表的字段名和别名?

PL/SQL美化规则文件详解相关推荐

  1. 【oracle工具报错】plsqldev客户端中的PL/SQL美化器文件的规则不能用的郁闷事(因注释放错位置)

    plsqldev客户端中的PL/SQL美化器文件的规则不能用的郁闷事 场景: 昨晚把PL/SQL美化器文件的规则已经调整的很好,而且已经可以使用, 但早上起来把文件里的注释调整了一下位置后导致规则文件 ...

  2. pl/sql 美化规则

    将文本按照自己规范调整,重命名为.br文件,放到一个不容易被删除的路径 pl/sql-编辑-美化器选项-选择文件 Version=1 RightMargin=100//右边距,间接决定了一行的长度 I ...

  3. 【oracle工具】plsqldev美化规则文件详细解释(关键字大写,标识符小写等规则)

    plsqldev美化规则文件详细解释(关键字大写,标识符小写等规则) 场景: 使用plsqldev客户端编写SQL时,时常对SQL语句的格式感到不悦,非常的不便于阅读. 解决: 为了使格式一步到位,且 ...

  4. 【java学习之路】(java框架)004.Mybatis SQL映射文件详解

    02Mybatis SQL映射文件详解 ​ 在之前我们学习了mybatis的全局配置文件,下面我们开始学习mybatis的映射文件,在映射文件中,可以编写以下的顶级元素标签: cache – 该命名空 ...

  5. Mybatis复习笔记3:映射文件详解

    映射文件详解 参数处理(#和$的区别) #{}:可以获取map中的值或者实体对象属性的值: ${}:可以获取map中的值或者实体对象属性的值: select * from person where i ...

  6. mybatis 鉴别其_MyBatis之Mapper XML 文件详解(四)-JDBC 类型和嵌套查询

    MyBatis之Mapper XML 文件详解(四)-JDBC 类型和嵌套查询 白玉 IT哈哈 支持的 JDBC 类型 为了未来的参考,MyBatis 通过包含的 jdbcType 枚举型,支持下面的 ...

  7. Spark SQL原理及常用方法详解(二)

    Spark SQL 一.Spark SQL基础知识 1.Spark SQL简介 (1)简单介绍 (2)Datasets & DataFrames (3)Spark SQL架构 (4)Spark ...

  8. vue-cli生成的模板各个文件详解(转)

    vue-cli脚手架中webpack配置基础文件详解 一.前言 原文:https://segmentfault.com/a/1190000014804826 vue-cli是构建vue单页应用的脚手架 ...

  9. MySQL存储引擎 lnnoDB逻辑架构 innodb存储引擎表空间(ibd文件)详解 回滚日志的物理空间

    文章目录 存储引擎 一 MySQL组织架构 二 查看存储引擎信息 三 修改存储引擎 3.1 配置文件修改存储引擎 3.2 临时修改存储引擎 3.3 建表时修改存储引擎 四 存储引擎实验 五 数据库升级 ...

最新文章

  1. easyexcel导入时读不到数据_EasyExcel简单使用--导入excel数据
  2. layer用ajax往jsp页面传值,layer.open中父页面向子页面传值(示例代码)
  3. Cygwin获取root权限
  4. 【转载】yolo处理流程实例
  5. 进阶指令——df指令(作用:查看磁盘的空间)、free指令(作用:查看内存使用情况)、head指令(作用:查看一个文件的前n行,如果不指定n,则默认显示前10行)、tail指令、less指令
  6. 加载如下html 写出输出顺序,浏览器加载和渲染html的顺序-结论篇
  7. .NET Core with 微服务 - Elastic APM
  8. E. Colorings and Dominoes(未解决)
  9. arduino naon介绍_Arduino Nano 自制版
  10. 【英语学习】【Level 07】U01 Making friends L2 A new friend from the past
  11. 关于linux交换分区的增大
  12. es数据无法写入,报错[FORBIDDEN/12/index read-only / allow delete (api)]
  13. [转载] python2.7中模块学习- textwrap 文本包装和填充
  14. hdu1829 A Bug's Life
  15. python通信系统仿真_Python与V-REP联合仿真
  16. Tic tac toe井字棋游戏python实现
  17. MySQL count用法
  18. 人工智能时代,数据标注产业将迎来黄金时期?丨曼孚科技
  19. Android Software
  20. 母亲节板报图片计算机方案,母亲节电子手抄报图片大全

热门文章

  1. 聊聊这个倾注10年的开源项目,如何一步步火爆GitHub!
  2. 计算机硬件老化对软件运行的影响,电脑用久了会卡并不一定是系统原因,还有可能是因为这几个方面...
  3. Python 进阶_迭代器 列表解析
  4. layui框架学习(29:滑块模块)
  5. 搜索框实现,常用搜索,历史搜索等
  6. 【Seq2Seq】Attention is All You Need
  7. dir命令(dir命令的功能是什么)
  8. 半小时复习java全内容
  9. 电竞CSGO数据API接口 - 【最近赛事列表】API调用示例代码
  10. 使用apifox进行接口并发测试