[计算机软件及应用]ST-QP-05-05 SQL编码规范.doc

上传人:音乐台 文档编号:1991713 上传时间:2019-01-29 格式:DOC 页数:34 大小:528.50KB
返回 下载 相关 举报
[计算机软件及应用]ST-QP-05-05 SQL编码规范.doc_第1页
第1页 / 共34页
[计算机软件及应用]ST-QP-05-05 SQL编码规范.doc_第2页
第2页 / 共34页
[计算机软件及应用]ST-QP-05-05 SQL编码规范.doc_第3页
第3页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[计算机软件及应用]ST-QP-05-05 SQL编码规范.doc》由会员分享,可在线阅读,更多相关《[计算机软件及应用]ST-QP-05-05 SQL编码规范.doc(34页珍藏版)》请在三一文库上搜索。

1、本文档及其所含信息为内部保密材料本文档及其所含信息为内部保密材料, ,由北京神州数码思特奇信息技术股份有限公司拥有由北京神州数码思特奇信息技术股份有限公司拥有 未经书面授权,不得对外泄露未经书面授权,不得对外泄露 COPYRIGHT 2007 保留所有保留所有权利权利 SQLSQL 编码规范编码规范 (V0.6V0.6) 北京神州数北京神州数码码思特奇信息技思特奇信息技术术股份有限公司股份有限公司 二二七二七二七年八月七年八月 SQL 编码规范编码规范 神州数码思特奇信息技术股份有限公司神州数码思特奇信息技术股份有限公司 地址:北京市海淀区上地九街 9 号数码科技广场二层(100085) 电话

2、 (Tel) :(010) 58856600 传真 (Fax):(010) 62969630 第第 2 页页 共共 34 页页 文档信息文档信息 文档名称文档名称SQL 编码规范 电电子文档子文档 SQL 编码规范.doc/Microsoft WORD 2000 文件状文件状态态 草草 稿稿 正式发布正式发布 正在修改正在修改 编编 写写 人人 dongjz、yangyun日日 期期2007 年 06 月 27 日 校校 对对 人人日日 期期 年 月 日 审审 核核 人人日日 期期 年 月 日 批批 准准 人人日日 期期年 月 日 变变更更记录记录 变变更更 序号序号 变变更原因更原因 变变更

3、更 页码页码 变变更前更前 版本号版本号 变变更后更后 版本号版本号 更改人更改人批准人批准人 生效生效 日期日期 备备 注注 1文档建立0.1 SQL 编码规范编码规范 神州数码思特奇信息技术股份有限公司神州数码思特奇信息技术股份有限公司 地址:北京市海淀区上地九街 9 号数码科技广场二层(100085) 电话 (Tel) :(010) 58856600 传真 (Fax):(010) 62969630 第第 3 页页 共共 34 页页 目目 录录 1概述概述7 1.1.范围7 2排版规则排版规则8 1.2.一般规则8 规则 2.1 独立单元书写规则.8 规则 2.2 块关键字对齐原则.8 规

4、则 2.3 块内缩进原则.9 规则 2.4 TAB/空格一致原则9 规则 2.5 程序块间隔行规则.9 规则 2.6 IF 语句9 规则 2.7 循环语句.9 规则 2.8 换行规则.10 规则 2.9 空格.10 规则 2.10 大小写规则.10 1.3.E-SQL 排版规则 11 规则 2.11 在 EXEC SQL 语句后加一个 TAB 键,然后再写 SQL 语句。11 规则 2.12 SQL 语句的关键字 SELECT、FROM、WHERE、AND 等,必须 尾部对齐。11 规则 2.13 语句的结束符“;”,放在语句的结束位置,不单独起一行。 11 规则 2.14 SQL 语句中不能

5、有注释,如“/*/”、“-”等,注释写在 SQL 语句的外面。11 规则 2.15 SQL 语句中的对齐方式用空格对齐,SQL 语句到“EXEC SQL”之间用 TAB 对齐。11 SQL 编码规范编码规范 神州数码思特奇信息技术股份有限公司神州数码思特奇信息技术股份有限公司 地址:北京市海淀区上地九街 9 号数码科技广场二层(100085) 电话 (Tel) :(010) 58856600 传真 (Fax):(010) 62969630 第第 4 页页 共共 34 页页 规则 2.16 每个嵌入的 EXEC SQL 语句,必须单独一行开始。11 3注释规则注释规则12 规则 3.1 对象注释

6、要求.12 规则 3.2 文件注释.12 规则 3.3 过程与函数的注释.12 规则 3.4 变量注释.13 规则 3.5 参数注释.13 规则 3.6 功能性注释.13 规则 3.7 单行注释.14 4命名规范命名规范15 4.1数据库对象15 建议 4.1 命名长度和结构.15 规则 4.2 不得出现省市、项目简称.15 规则 4.3 年月日等数字.15 规则 4.4 区分非正式表.15 规则 4.5 命名特例.16 4.2PL/SQL 程序块内变量16 规则 4.6 程序块内变量命名.16 4.3E-SQL 源文件17 规则 4.7:E-SQL 源文件命名17 4.4常用英文缩写字典17

7、 规则 4.8:业务操作类.17 规则 4.9:业务名词类.19 5SQL 程序编码规则程序编码规则.21 5.1PL/SQL 程序块21 SQL 编码规范编码规范 神州数码思特奇信息技术股份有限公司神州数码思特奇信息技术股份有限公司 地址:北京市海淀区上地九街 9 号数码科技广场二层(100085) 电话 (Tel) :(010) 58856600 传真 (Fax):(010) 62969630 第第 5 页页 共共 34 页页 规则 5.1 简单函数或过程.21 规则 5.2 不允许使用内嵌函数或过程.21 规则 5.3 复杂函数或过程.22 5.2E-SQL 程序22 规则 5.4 SQ

8、L 语句出错判断,使用 NOTFOUND、SQLOK 等宏判断 SQL 语句是否正确执行。22 规则 5.5 E-SQL 使用自己的出错控制,不使用 E-SQL 提供的统一出错控 制,E-SQL 的出错一般设置为无效。22 规则 5.6 属主变量都要放在 SQL 定义区统一定义。22 5.3可读性要求23 规则 5.7 不允许使用 SELECT *.23 规则 5.8 INSERT 必须指定插入的字段名23 规则 5.9 函数及表达式放在等号左边.23 规则 5.10 不等于统一使用“=替代.31 7程序质量保证程序质量保证32 规则 7.1 运行日志.32 规则 7.2 错误日志.32 规则

9、 7.3 工作日志.32 规则 7.4 异常检查.32 8安全保障安全保障33 8.1PL/SQL 安全33 规则 8.1 DML/DDL 语句需说明功能和要求.33 规则 8.2 游标使用结束后必须关闭.33 8.2E-SQL 安全33 规则 8.3 PROC 程序中禁止出现用户名和密码.33 8.3数据库操作33 规则 8.4 DML/DDL 操作应显式写明对象属主.33 SQL 编码规范编码规范 神州数码思特奇信息技术股份有限公司神州数码思特奇信息技术股份有限公司 地址:北京市海淀区上地九街 9 号数码科技广场二层(100085) 电话 (Tel) :(010) 58856600 传真

10、(Fax):(010) 62969630 第第 7 页页 共共 34 页页 1 1 概述概述 制定编码规范的最主要的目的是为了对产出代码的长期维护。通常负责维护 代码的人大多都不是开发者本人,如果有一个统一的代码格式以及说明就可以减 少混淆提高理解速度。因此,下列的编码规范是基于良好的编码习惯和可读性的 原则来制定的。 1.1.范围范围 本规范定义了所有代码编写者在编写 SQL 程序时应遵守的一些规则和习惯。 本规范采用以下术语描述: 规则:规则:编程时强制必须遵守的原则。 建议:建议:编程时必须加以考虑的原则。 说明说明【 】:对此规则或建议进行必要的解释。 示例:示例:对此规则或建议从正、

11、反两个方面给出例子。 SQL 编码规范编码规范 神州数码思特奇信息技术股份有限公司神州数码思特奇信息技术股份有限公司 地址:北京市海淀区上地九街 9 号数码科技广场二层(100085) 电话 (Tel) :(010) 58856600 传真 (Fax):(010) 62969630 第第 8 页页 共共 34 页页 2 2 排版规则排版规则 1.2.一般规则一般规则 规则规则 2.1 独立单元书写规则独立单元书写规则 整个文件,以过程、函数或包为相对独立的单元。在每个单位中,采用以下 统一格式: 示例:示例: CREATE or REPLACE AS BEGIN EXCEPTION END;

12、即:CREATE、AS、BEGIN、EXCEPTION 和 END,在第 1 列。后面的内容, 间隔 4 个空格书写。 除非内部处理,否则一律带上 EXCEPTION。 规则规则 2.2 块关键字对齐原则块关键字对齐原则 任何块的关键字,首字母在列上对齐。 即:一个程序块内部,标识程序块的关键字开始语句(IF、DO、FOR 和 BEGIN)、中间语句(ELSIF、EXCEPTION、ELSE)和结束语句(END IF、END LOOP、END),在列位置对齐。 SQL 编码规范编码规范 神州数码思特奇信息技术股份有限公司神州数码思特奇信息技术股份有限公司 地址:北京市海淀区上地九街 9 号数码

13、科技广场二层(100085) 电话 (Tel) :(010) 58856600 传真 (Fax):(010) 62969630 第第 9 页页 共共 34 页页 规则规则 2.3 块内缩进原则块内缩进原则 即:一个块下属的内容,从下一行开始,从这个块的标识首字符右移 4 个空 格(或者一个 tab 键),从第 5 个列位置开始。 规则规则 2.4 TAB/空格一致原则空格一致原则 即:一个源文件中,在内容缩进上,要么采用 tab 方式,要么采用 4 个空格 方式。不能二者并存。 规则规则 2.5 程序块间程序块间隔行规则隔行规则 SQL 程序块之间,采用 1 行空行分隔。适当时候,可以存在 2

14、 行空行,不要 超过 2 行(注释行不在此约定范围内)。 规则规则 2.6 IF 语句语句 IF 语句是条件判断语句,只有一个条件的时候,可以不用圆括号。两个以上 条件的时候,要求用圆括号(),使得逻辑处理明晰。 IF/ELSIF/ELSE/END IF 关键字,每个都独立占一行。且每行的开始列位置都 相同。 特别注意,结束语句 END IF 后面,有分号。 规则规则 2.7 循环语句循环语句 循环开始语句(FOR、WHILE)跟 LOOP 语句分行。 END LOOP 语句,跟 LOOP 在同一列位置。 示例:示例: FOR v_Index IN 120 LOOP SQL 编码规范编码规范

15、神州数码思特奇信息技术股份有限公司神州数码思特奇信息技术股份有限公司 地址:北京市海淀区上地九街 9 号数码科技广场二层(100085) 电话 (Tel) :(010) 58856600 传真 (Fax):(010) 62969630 第第 10 页页 共共 34 页页 END LOOP; 规则规则 2.8 换行换行规则规则 一行最长不能超过 80 字符。当超过时,以语意为单位,进行断行,且断行 后的内容,缩进书写。 示例:示例: - 创建汇总基础表 Create_BaseDat - p_BaseSQL in varchar - SQL 语句 - p_sResultTBL in varchar

16、- 结果输出数据表 - p_sInfoStr in varchar- 提示信息 - - 返回值:0 记录数 Function CReate_BaseData(p_BaseSQL in varchar, p_sResultTBL in varchar, p_sInfoStr in varchar2) RETURN INT; 此外,SELECT/FROM/WHERE/ORDER BY/GROUP BY 等子句必须另起一 行写。 规则规则 2.9 空格空格 SQL 内算数运算符、逻辑运算符连接的两个元素之间必须用空格分隔。 逗号之后必须接一个空格。 关键字、保留字和左括号之间必须有一个空格。 规则规

17、则 2.10 大小写规则大小写规则 SQL 语句中出现的系统保留字、内置函数名、SQL 保留字、绑定变量等都应 大写。 SQL 编码规范编码规范 神州数码思特奇信息技术股份有限公司神州数码思特奇信息技术股份有限公司 地址:北京市海淀区上地九街 9 号数码科技广场二层(100085) 电话 (Tel) :(010) 58856600 传真 (Fax):(010) 62969630 第第 11 页页 共共 34 页页 1.3.E-SQL 排版规则排版规则 规则规则 2.11 在在 EXEC SQL 语句后加一个语句后加一个 TAB 键,然后再写键,然后再写 SQL 语句。语句。 规则规则 2.12

18、 SQL 语句的关键字语句的关键字 SELECT、FROM、WHERE、AND 等,等, 必须尾部对齐。必须尾部对齐。 规则规则 2.13 语句的结束符语句的结束符“;”,放在语句的结束位置,不单独起一行。,放在语句的结束位置,不单独起一行。 规则规则 2.14 SQL 语句中不能有注释,如语句中不能有注释,如“/*/”、“-”等,注释写在等,注释写在 SQL 语句的外面。语句的外面。 规则规则 2.15 SQL 语句中的对齐方式用空格对齐,语句中的对齐方式用空格对齐,SQL 语句到语句到“EXEC SQL”之间用之间用 TAB 对齐。对齐。 示例:示例: E-SQL EXEC SQLSELE

19、CT COL1, COL2 FROM tab1 WHERE col1 = ? AND col2 = ?; SQL 编码规范编码规范 神州数码思特奇信息技术股份有限公司神州数码思特奇信息技术股份有限公司 地址:北京市海淀区上地九街 9 号数码科技广场二层(100085) 电话 (Tel) :(010) 58856600 传真 (Fax):(010) 62969630 第第 12 页页 共共 34 页页 规则规则 2.16 每个嵌入的每个嵌入的 EXEC SQL 语句,必须单独一行开始。语句,必须单独一行开始。 SQL 编码规范编码规范 神州数码思特奇信息技术股份有限公司神州数码思特奇信息技术股份

20、有限公司 地址:北京市海淀区上地九街 9 号数码科技广场二层(100085) 电话 (Tel) :(010) 58856600 传真 (Fax):(010) 62969630 第第 13 页页 共共 34 页页 3 3 注释规则注释规则 规则规则 3.1 对象注释要求对象注释要求 创建每一数据库对象时都要加上 COMMENT ON 注释,以说明该对象的功能 和用途;建表时,对某些数据列也要加上 COMMENT ON 注释,以说明该列和/ 或列取值的含义。 示例:示例: comment on table RasInfo.TD_UserInfo is 普通地区用户信息表,用于记录除成都外的其他地区

21、的用户信息,按地区分区; comment on column RasInfo.TD_UserInfo.UserCode is 用户编码,主键; 规则规则 3.2 文件注释文件注释 在每个 SQL 脚本文件的开头,要用块注释,进行文件功能说明,文件编写人、 联系方式和文件创建时间说明等。 由于 PL/SQL 语句的特殊性,每行注释前以-为标志。 示例: - - 收入保障系统 后台数据库脚本 - - 特殊号码汇总计算程序 dsras_pkgSpecal_CalcSum.SQL - - 文本责任人:丁凌风(dinglfsi- ) - - 2007.02.28 开始创建 - 规则规则 3.3 过程与函

22、数的注释过程与函数的注释 在每个过程或函数的开头,使用块注释,进行函数功能说明,入口出口参数 SQL 编码规范编码规范 神州数码思特奇信息技术股份有限公司神州数码思特奇信息技术股份有限公司 地址:北京市海淀区上地九街 9 号数码科技广场二层(100085) 电话 (Tel) :(010) 58856600 传真 (Fax):(010) 62969630 第第 14 页页 共共 34 页页 和返回值说明。 示例:示例: - - 得到集团用户外部编码。 - author lugz - version %I%, %G% - since 1.00 - inparam regionCode 地市代码 -

23、 inparam smCode 业务代码 - outparam grpUserNo 集团用户编码 - return 返回 0 表示正确,否则出错! - 规则规则 3.4 变量注释变量注释 对 SQL 代码中的局部变量,重要的,要进行注释。尤其对 Package 和 OBJECT 中的内部全局变量,特别要进行注解。 关于变量的注释,采用行尾注释。 示例:示例: TYPE RefCursor IS REF CURSOR; - - 定义参考游标类型 - 最大欠费用户指标所在地区描述 f_AreaName VarChar(20); 对常量及变量注释时,应注释被保存值的含义,包括合法取值的范围。 规则规

24、则 3.5 参数注释参数注释 对函数或过程的每个参数进行说明。 如果取值范围确定,也一并说明。 取值有特定含义的变量(如 boolean 类型变量),给出每个值的含义。 规则规则 3.6 功能性注释功能性注释 对较为复杂的 SQL 语句应注释,并说明算法和功能。 SQL 编码规范编码规范 神州数码思特奇信息技术股份有限公司神州数码思特奇信息技术股份有限公司 地址:北京市海淀区上地九街 9 号数码科技广场二层(100085) 电话 (Tel) :(010) 58856600 传真 (Fax):(010) 62969630 第第 15 页页 共共 34 页页 应对不易理解的分支条件表达式加注释。

25、对重要的计算应说明其功能。 过长的函数实现,应将其语句按实现的功能分段加以概括性说明。 规则规则 3.7 单行注释单行注释 SQL 程序中,尽量采用单行注释:-。这样,有利于程序调试时,通过块 注释方式,实现大段代码注释。 SQL 编码规范编码规范 神州数码思特奇信息技术股份有限公司神州数码思特奇信息技术股份有限公司 地址:北京市海淀区上地九街 9 号数码科技广场二层(100085) 电话 (Tel) :(010) 58856600 传真 (Fax):(010) 62969630 第第 16 页页 共共 34 页页 4 4 命名规范命名规范 4.1 数据库对象数据库对象 命名对象范围:ORAC

26、LE 数据库对象,包括表、索引、存储过程、触发器、 序列、视图、同义词、数据链路。 建议建议 4.1 命名长度和结构命名长度和结构 对象名不超过 30 个字符,不低于 6 个字符,建议在 825 个左右。 由 35 部分构成,每部分为有一定含义的英文缩写或者数字。每部分建议 为 34 个字符。 英文缩写参见“常见缩写字典” 。 规则规则 4.2 不得出现省市、项目简称不得出现省市、项目简称 不允许出现某省某地市或某项目的简称,例如 sc_CustInfo 中的 sc 是不许可 的。 规则规则 4.3 年月日等数字年月日等数字 年月日数字符号,一般应在数据表的尾部。不允许将年月日及其它数字放在

27、对象名的中间。 例如,Cust200703Info 不许可,CustInfo200703 则许可。 规则规则 4.4 区分非正式表区分非正式表 存在于生产环境的非正式表,如备份表,必须以原表名加前缀 SQL 编码规范编码规范 神州数码思特奇信息技术股份有限公司神州数码思特奇信息技术股份有限公司 地址:北京市海淀区上地九街 9 号数码科技广场二层(100085) 电话 (Tel) :(010) 58856600 传真 (Fax):(010) 62969630 第第 17 页页 共共 34 页页 bakyymmdd_ ,以便于识别和及时清理。 因此,正式生产表中,最好不要出现 BAK、BACK 之

28、类的字符串。 规则规则 4.5 命名特例命名特例 编号编号数据库对象数据库对象格式范例格式范例备注备注 1.全局临时表(golbal temporary table) gTmp_XxxYyyZzz全局临时表属于 ORACLE 的 一种特殊的表类型,不是指 临时创建的非正式表 2.视图View_XxxYyyZzz 3.普通索引Idx_TabName_ColumnNameColumnName 是该索引第一 个字段的简写 4.主键索引Idx_TabName_Pk 5.同义词必须与原对象名一致若已存在相同的对象名,必 须合理调整该冲突对象名或 者放弃使用同义词 6.触发器Trig_XxxYyyZzz

29、7.存储过程Proc_XxxYyyZzz 8.程序包Pkg_ XxxYyyZzz 9.函数Func_XxxYyyZzz 10.序列Seq_XxxYyyZzz 11.数据链路Link_UserName_DbNameDBNAME 是指远程数据库的 名称,USERNAME 是指该 远程库的用户名 12.分区表中的分区名Part_Xxx 4.2 PL/SQL 程序块内变量程序块内变量 规则规则 4.6 程序块内变量命名程序块内变量命名 全局变量,以 g_开头进行命名; SQL 编码规范编码规范 神州数码思特奇信息技术股份有限公司神州数码思特奇信息技术股份有限公司 地址:北京市海淀区上地九街 9 号数码

30、科技广场二层(100085) 电话 (Tel) :(010) 58856600 传真 (Fax):(010) 62969630 第第 18 页页 共共 34 页页 包内公用变量,以 f_开头命名; 过程局部变量,以 v_开头命名; 参数变量,以 p_开头命名; 游标变量,以 cur_开头命名。 4.3 E-SQL 源文件源文件 规则规则 4.7:E-SQL 源文件命名源文件命名 源文件命名规则,一般如下: RXX_XX.pc 或者 RXX_XX.cp 我们以前的 E-SQL 命令一般都用*.cp,而国际标准一般都用*.pc。 特此约定,以前的程序目录沿用*.cp,新的程序目录使用 *.pc 命

31、名。 文件名以大写字母 R 开头,后面跟操作代码。操作代码的前两位放在最前面, 后面的两位按照顺序放在“_”的后面,如 R11_04060820。 4.4 常用英文缩写字典常用英文缩写字典 规则规则 4.8:业务操作类:业务操作类 中文名称中文名称英文名称英文名称英文缩写英文缩写 读取getget 设置setset 查询queryqry 变更changechg 提交、确认confirmcfm SQL 编码规范编码规范 神州数码思特奇信息技术股份有限公司神州数码思特奇信息技术股份有限公司 地址:北京市海淀区上地九街 9 号数码科技广场二层(100085) 电话 (Tel) :(010) 5885

32、6600 传真 (Fax):(010) 62969630 第第 19 页页 共共 34 页页 冲正、回滚rollbackroll 验证validatevali 比较comparecmp 创建createcrt 选择selectsel 插入insertins 修改updateupd 删除deletedel 转移transfertran 替换replacerpl 计算calculatecalc 统计statisticstat 申请requestreq 预约、预订bookbook 订购orderord 退订cancelcanc 打开onon 关闭offoff 配置configcfg 分配alloca

33、teallo 结算mediationmed 费用feefee 发布releaserls 跟踪tracetrac 清除clearclr 稽核auditaud 开户、入网openopen 业务变更changechg 查询queryqry 过户Change customerchgCust 缴费paymentpay SQL 编码规范编码规范 神州数码思特奇信息技术股份有限公司神州数码思特奇信息技术股份有限公司 地址:北京市海淀区上地九街 9 号数码科技广场二层(100085) 电话 (Tel) :(010) 58856600 传真 (Fax):(010) 62969630 第第 20 页页 共共 34

34、 页页 托收contractcon 规则规则 4.9:业务名词类:业务名词类 中文名称中文名称英文名称英文名称英文缩写英文缩写 代码codecode 类型typetype 标识identifierid 号码No.no 序号seriationser 名称namename 消息messagemsg 信息informationinfo 历史historyhis 日志loglog 密码passwordpsw 状态statussta 日期datedate 时间timetime 科目itemitem 关系relationrlt 组织、机构organizationorg 角色rolerole 地址addre

35、ssaddr 担保assurerass 版本versionver 级别levellev 电话phoneph 合同contractcon 发票invoiceinv 接口interfaceintf 操作oprationop SQL 编码规范编码规范 神州数码思特奇信息技术股份有限公司神州数码思特奇信息技术股份有限公司 地址:北京市海淀区上地九街 9 号数码科技广场二层(100085) 电话 (Tel) :(010) 58856600 传真 (Fax):(010) 62969630 第第 21 页页 共共 34 页页 功能functionfunc 客户customercust 集团groupgrp

36、用户subscribersub 帐户accountacc 产品productprd 服务servicesvc 价格pricepri 资源resourceres 权限powerpow SQL 编码规范编码规范 神州数码思特奇信息技术股份有限公司神州数码思特奇信息技术股份有限公司 地址:北京市海淀区上地九街 9 号数码科技广场二层(100085) 电话 (Tel) :(010) 58856600 传真 (Fax):(010) 62969630 第第 22 页页 共共 34 页页 5 5 SQLSQL 程序编码规则程序编码规则 5.1 PL/SQL 程序块程序块 规则规则 5.1 简单函数或过程简单

37、函数或过程 单一功能函数或过程(以含注释在内,不超过 100 行就能解决问题为标准), 约定采用独立过程或函数来实现。 示例:示例: - -是否是一个有效的数值 - 参数: - p_NumStr in varchar2 - 字符型数字串 - 返回值: - 如果是数值,返回 true;否则返回 false - CREATE OR REPLACE Function RasInfo.IsNumber(p_NumStr in varchar2) return boolean AS v_Num Number; BEGIN IF p_NumStr IS NULL THEN return False; EN

38、D IF; v_Num := To_Number(p_NumStr); Return True; EXCEPTION WHEN OTHERS THEN RETURN False; END; SQL 编码规范编码规范 神州数码思特奇信息技术股份有限公司神州数码思特奇信息技术股份有限公司 地址:北京市海淀区上地九街 9 号数码科技广场二层(100085) 电话 (Tel) :(010) 58856600 传真 (Fax):(010) 62969630 第第 23 页页 共共 34 页页 规则规则 5.2 不允许使用内嵌函数或过程不允许使用内嵌函数或过程 尽管 ORCALE 支持内嵌,但是不允许使用

39、内嵌函数或过程。 规则规则 5.3 复杂函数或过程复杂函数或过程 功能比较复杂的函数,不建议使用独立函数或过程的实现。必须使用 Package 或 OBJECT 技术来实现。 按照功能相近或相似原则,进行 package 或 object 的组织。 复杂的业务逻辑,采用 OBJECT 技术来实现。公用的基础功能,采用 package 技术实现。 5.2 E-SQL 程序程序 规则规则 5.4 SQL 语句出错判断,使用语句出错判断,使用 NOTFOUND、SQLOK 等宏判断等宏判断 SQL 语句是否正确执行。语句是否正确执行。 规则规则 5.5 E-SQL 使用自己的出错控制,不使用使用自己

40、的出错控制,不使用 E-SQL 提供的统一出提供的统一出 错控制,错控制,E-SQL 的出错一般设置为无效。的出错一般设置为无效。 EXEC SQL WHENEVER SQLERROR CONTINUE; EXEC SQL WHENEVER SQLWARNING CONTINUE; EXEC SQL WHENEVER NOT FOUND CONTINUE; 规则规则 5.6 属主变量都要放在属主变量都要放在 SQL 定义区统一定义。定义区统一定义。 EXEC SQL BEGIN DECLARE SECTION; char sSql1024; SQL 编码规范编码规范 神州数码思特奇信息技术股份

41、有限公司神州数码思特奇信息技术股份有限公司 地址:北京市海淀区上地九街 9 号数码科技广场二层(100085) 电话 (Tel) :(010) 58856600 传真 (Fax):(010) 62969630 第第 24 页页 共共 34 页页 EXEC SQL END DECLARE SECTION; 5.3 可读性要求可读性要求 规则规则 5.7 不允许使用不允许使用 SELECT * 使用 SELECT 语句时,不允许使用 SELECT *,要使用明确的列名。目的是 防止数据字段增加后的影响。 规则规则 5.8 INSERT 必须指定插入的字段名必须指定插入的字段名 使用 INSERT

42、时,必须指定插入的字段名,主要是考虑以后表结构的变动。 规则规则 5.9 函数及表达式放在等号左边函数及表达式放在等号左边 应将 SQL 语句中的数据库函数、计算表达式等放置在等号右边。不要在等号 的左边。 规则规则 5.10 不等于统一使用不等于统一使用“是等价的,都代表不等于的意义。为了统一,不等于 一律使用“ (SELECT MIN(X.ROWID) FROM EMP X WHERE X.EMP_NO = E.EMP_NO); SQL 编码规范编码规范 神州数码思特奇信息技术股份有限公司神州数码思特奇信息技术股份有限公司 地址:北京市海淀区上地九街 9 号数码科技广场二层(100085)

43、 电话 (Tel) :(010) 58856600 传真 (Fax):(010) 62969630 第第 28 页页 共共 34 页页 建议建议 6.9 用用 TRUNCATE 替代替代 DELETE 删除全表删除全表 当删除表中的所有记录时,如果不需要恢复,建议使用 TRUNCATE 而不是 DELETE ALL,既不占用回滚段,也能加快速度。 建议建议 6.10 特大事务多使用特大事务多使用 COMMIT 在程序中尽量避免特大事务,多使用 COMMIT, 这样程序的性能得到提高,也 会因为 COMMIT 所释放的资源而减少。 当然要注意,COMMIT 次数也不能太频繁,频繁同样会增加数据库

44、负担。 建议建议 6.11 用用 Where 子句替换子句替换 HAVING 子句子句 避免使用 HAVING 子句, HAVING 只会在检索出所有记录之后才对结果集进行 过滤. 这个处理需要排序,总计等操作. 如果能通过 WHERE 子句限制记录的数目, 那就能减少这方面的开销. 示例:示例: 低效:低效: SELECT REGION,AVG(LOG_SIZE) FROM LOCATION GROUP BY REGION HAVING REGION != SYDNEY AND REGION != PERTH 高效:高效: SELECT REGION,AVG(LOG_SIZE) FROM L

45、OCATION WHERE REGION != SYDNEY AND REGION != PERTH GROUP BY REGION SQL 编码规范编码规范 神州数码思特奇信息技术股份有限公司神州数码思特奇信息技术股份有限公司 地址:北京市海淀区上地九街 9 号数码科技广场二层(100085) 电话 (Tel) :(010) 58856600 传真 (Fax):(010) 62969630 第第 29 页页 共共 34 页页 建议建议 6.12 用用 EXISTS 替代替代 IN 在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联 接.在这种情况下, 使用 EXISTS(或

46、 NOT EXISTS)通常将提高查询的效率. 示例:示例: 低效:低效: SELECT * FROM EMP (基础表) WHERE EMPNO 0 AND DEPTNO IN (SELECT DEPTNO FROM DEPT WHERE LOC = MELB) 高效高效: : SELECT * FROM EMP (基础表) WHERE EMPNO 0 AND EXISTS (SELECT X FROM DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO AND LOC = MELB) 建议建议 6.13 用用 NOT EXISTS 替代替代 NOT IN 无论在哪种情况下,NOT IN 都是最低效的 (因为它对子查询中的表执行了一 个全表遍历).可以把它改写成外连接(Outer Joins)或 NOT EXISTS. 示例:示例: SELECT FROM EMP WHERE DEPT_NO NOT IN (SELE

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1