Oracle 开发规范(一)
编写目的
统一 SQL 语句编写格式。
\
让 SQL 语句更美观,更易阅读。
\
增强 SQL 可维护性。
\
避免低效 SQL 导致的性能问题。
\
书写
1.1.1【强制】SQL 语句的所有表名、字段名全部大写,系统保留字、内置函数名、SQL 保留字也大写
举例:
Demo
Avoided
Select subs_id, prefix, acc_nbr
From Subs
Where Subs_Id = 10001
Preferred
SELECT SUBS_ID, PREFIX, ACC_NBR
FROM SUBS
WHERE SUBS_ID=10001
\
1.1.2【强制】使用 INSERT 时,必须指定插入的字段名,严禁不指定字段名直接插入 VALUES
举例:
Demo
Avoided
INSERT INTO SUBS
VALUES(nSubsId, vPrefix, vAccNbr, ......)
Preferred
INSERT INTO SUBS(SUBS_ID,PREFIX,ACC_NBR, .....)
VALUES(nSubsId, vPrefix, vAccNbr, ......)
\
空格
1.2.1【强制】=、<=、>=、<>等符号前后加上一个空格
\
1.2.2 【强制】逗号之后必须接一个空格或换行
\
1.2.3 【强制】关键字、保留字和左括号之间必须有一个空格或换行
举例:
Demo
SELECT A.SUBS_ID,
A.PREFIX,
A.ACC_NBR,
B.PROD_STATE,
C.SERV_TYPE
FROM SUBS A,
PROD B,
INDEP_PROD_SPEC D
WHERE A.SUBS_ID = B.PROD_ID
AND B.PROD_SPEC_ID = C.INDEP_PROD_SPEC_ID
AND B.PROD_STATE NOT IN ('B', 'F')
AND B.CREATED_DATE >= :CREATE_DATE
\
缩进
1.3.1【强制】最外层的 CREATE、BEGIN、END 等关键字要顶格书写
\
3.3.2 【强制】对于存储过程、Function、视图等数据库对象,缩进为 4 个空格,禁止使用 TAB 符号
\
换行
1.4.1 【强制】一行有多列,超过 120 个字符时,基于列对齐原则,采用下行向右缩进 1.4.2 【强制】WHERE 子句书写时,每个条件占一行,语句另起一行时,以保留字开始,保留字右对齐,
对于连接符=、<=、>=之类的不换行
举例:
Demo
\
1.4.3 【强制】同一语句中的 SELECT、UPDATE、SET、INSERT、DELETE、FROM、WHERE、ORDERBY、GROUP
BY、HAVING 等第一个关键字换行后右对齐;如果有关键字长度大于 SELECT/DELETE/UPDATE,则采用左对齐
举例:
Demo
\
1.4.4 【强制】IF THEN ELSE、FOR LOOP、WHILE、UNTIL 等嵌套语句的子句部分增加一个向右缩进
举例:
Demo
\
1.4.5 【强制】多表连接时,使用表的别名来引用列,一个表及其别名一行,折行后表名与上一行表名对
齐
举例:
Demo
\
别名
1.5.1【强制】多表关联操作的 SQL,必须使用表的别名
举例:
Demo
Preferred SELECT A.SUBS_ID,
FROM SUBS A,
PROD B
WHERE A.SUBS_ID = B.PROD_ID
AND B.PROD_STATE NOT IN ('B', 'F')
\
注释
1.6.1【推荐】对较为复杂的 SQL 语句加上注释,说明算法、功能
说明:
编号
说明信息
a
应对不易理解的分支条件表达式加注释;
b
对重要的计算应说明其功能;
c
过长的函数实现,应将其语句按实现的功能分段加以概括性说明;
d
每条 SQL 语句应尽可能有注释说明(表名、字段名);
e
常量及变量注释时,必须说明被保存值的含义,最好也说明合法取值的范围;
f
可采用单行/多行注释(-- 或 /** */ 方式);
\
评论