中石化南京工程公司Oracle数据库命名编码规范.doc_第1页
中石化南京工程公司Oracle数据库命名编码规范.doc_第2页
中石化南京工程公司Oracle数据库命名编码规范.doc_第3页
中石化南京工程公司Oracle数据库命名编码规范.doc_第4页
中石化南京工程公司Oracle数据库命名编码规范.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

OracleOracle 数据库命名编码规范数据库命名编码规范 oracle 编码规范 中石化南京工程有限公司 - 1 - 改版履历改版履历 版本号版本号发行日发行日更改对象更改对象更改内容更改内容拟制拟制审查审查批准批准 0.12013-06-27 初版作成田影欣 qw oracle 编码规范 中石化南京工程有限公司 - 2 - 目录目录 1.文档介绍文档介绍4 1.1文档目的.4 1.2文档范围.4 1.3定义.4 1.4参考资料.4 2.命名规范命名规范4 2.1一般规则.4 2.2对象命名汇总表.5 3.编码规范编码规范6 3.1一般性规定.6 3.2CREATE 语句.7 3.3SELECT 语句 .7 3.4INSERT 语句8 3.5UPDATE 语句 8 3.6DELETE 语句.9 3.7游标语句.9 3.8IF 语句.9 3.9简单循环语句.11 3.10FOR 循环语句11 3.11WHILE 循环语句.11 3.12程序块规范.12 3.13语法规范.12 4.设计规范设计规范14 4.1一般表设计.14 4.2特殊表设计原则.15 4.3索引设计原则.15 4.4完整性设计原则.15 4.5触发器.15 4.6视图设计.15 4.7性能优化.16 5.书写规范书写规范20 5.1缩进风格.20 5.2空格及换行.20 6.注释说明注释说明21 6.1一般性注释.21 oracle 编码规范 中石化南京工程有限公司 - 3 - 6.2函数文本注释.21 7.异常规范异常规范22 7.1PL/SQL异常规范.22 7.2后台验证异常信息规范.23 8.附录附录23 8.1附一 开发工具 .23 8.2附二 预定义异常 .24 8.3附三 范式 .25 8.3.1 第一范式 .25 8.3.2 第二范式 .25 8.3.3 第三范式 .25 8.3.4 Boyce-Codd 范式26 8.3.5 第四范式 .26 8.3.6 第五范式 .26 8.3.7 反规范化 .26 oracle 编码规范 中石化南京工程有限公司 - 4 - 1.文档介绍文档介绍 1.1 文文档档目目的的 本文档用于指导开发设计人员对 Oracle 数据库进行设计和编码。使用统一的命名 和编码规范,使数据库对象命名及编码风格标准化,可增加程序的可读性,增强系统 的可维护性,提高软件的质量。 本文档仅仅针对 Oracle 数据库做的规范,对其他数据库不具有指导意义。 1.2 文文档档范范围围 本规范适用于公司范围内所有以 Oracle 作为后台数据库的应用系统和项目开发工 作。 1.3 定定义义 无 1.4 参参考考资资料料 2.命名规范命名规范 2.1 一一般般规规则则 Oracle 中的各种数据对象,包括实例、数据库、表空间、表、视图、存储过程、函 数、解发器等的命名都要遵循 Oracle 的标准命名规则: 1) 以字符打头,30 个字符以内,名称超过长度的情况下适当采用缩写。 2) 只能包含 A-Z,a-z,0-9,_。 3) 不能和同一个表空间下的其他对象重名。 4) 不能是 Oracle 服务器的保留字。 5) 数据对象尽量不要使用缩写;如要缩写最好使用容易看懂的缩写。 2.2 对对象象命命名名汇汇总总表表 对象对象 对象名对象名前缀前缀范例范例描述描述 表(table) t_ t_user 表名长度原则上不超过25 个字符;表、视图、字段 oracle 编码规范 中石化南京工程有限公司 - 5 - 名中不出现复数,创建表 必须要注释,comments 必须要填写。 视图(view) v_v_user 如果表名或字段名过长, 则用表名或字段名的缩写。 序列(sequence) s_s_user 一般索引(normal index) i_i_user_userna me field:字段名,遇上 长字段名可采用缩写 唯一索引(unique index) i_u_i_u_user_birt hday 主键(primary key) pk_ pk_user_useri d 外键(foreign key) fk_ fk_student_us er_userid 簇(cluster) cl_ cl_user_stude nt 触发器(triger) tr_i _ tr_u _ tr_d _ tr_iud_ tr_i_ add_user_birt hday i:insert u:update d:delete 存储过程 (procedure) p_i_ p_u_ p_d_ p_s_ p_i_user_birt hday 函数 (function) f_ f_get_usernam e_by_userid 包及包体(package SELECT col1, col2, col3, col4, col5, col6, col7, col8, col9, col10 FROM sb_sbqkxx,sb_bb011101 WHERE sb_sbqkxx.czwdbh = sb_bb.czwdbh AND sb_sbqkxx.swdjbh = avc_swdjbh oracle 编码规范 中石化南京工程有限公司 - 8 - AND sb_sbqkxx.sbsssq = avc_sbsssq; 3.4INSERT 语语句句 关键字用大写,列名和表名采用小写;【推荐】 语句中嵌入逗号时,在逗号后面加一空格,当逗号是最后一个字符时,把它放在本 行; 当语句的同一部分要延续到下一行时,按下列格式排列: 当语句中出现括号时,括号的两边不留空格。 格式如下:【推荐】 INSERT INTO (, , , ,) VALUES (, , ,) 例如: insert into sm_user (user_id, user_name, login_name) values ( p_user_id, p_user_name, p_login_name) insert into sm_duty_bak (duty_id, duty_name, created_by, creation_date, last_updated_by, last_update_date, disable_date ) select duty_id, duty_name, created_by, creation_date, last_updated_by, last_update_date, disable_date from sm_duty where duty_id =: duty_id 3.5UPDATE 语语句句 关键字右对齐; 格式如下:【推荐】 UPDATE SET = , = , oracle 编码规范 中石化南京工程有限公司 - 9 - = 3.6DELETE 语语句句 格式如下:【推荐】 DELETE FROM table1 WHERE col1 = ? 3.7 游游标标语语句句 格式如下:【推荐】 程序中使用显示游标。格式如下 OPEN cur_name; LOOP FETCH cur_ into ; EXIT WHEN cur_name%notfound; END LOOP; CLOSE cur_name; 3.8IF 语语句句 条件执行语句 IFELSE 按以下格式编写:【推荐】 IF THEN ELSE (或 ELSIF) THEN END IF; 在 IFTHEN 和 ELSE(或 ELSIF)及 ELSETHEN 和 ENDIF 间可包含一条或多条 PL/SQL 语句,而不需要加 BEGIN 和 END IFELSEENDIF 语句可以嵌套; 注意 ELSIF 的写法; if 后的条件要用括号括起来,括号内每行最多两个条件。 例如: if (v_count = 1 or v_count = 2 or v_count = 5 or v_count = 6 ) then select sysdate into v_date from dual; end if; oracle 编码规范 中石化南京工程有限公司 - 10 - 减少控制语句的检查次数,如在 else(ifelse)控制语句中,对最常用符合条件,尽 量往前被检查到。 例如:以下例如不符合规范(假设 v_count = 1 条件大数情况会被满足) if (v_count = 0) then null; elsif (v_count = 1) then null; end if; 应如下书写:应如下书写: if (v_count = 1) then null; elsif (v_count = 0) then null; end if; 尽量避免使用嵌套的 if 语句,在这种情况应使用多个 if 语句来判断其可能。 例如:例如:以下例如不符合规范 if v_count =0 then if v_flag = 0 then null; else null; end if; else v_count =1 then if v_flag = 0 then null; else null; end if; end if; oracle 编码规范 中石化南京工程有限公司 - 11 - 应如下书写:应如下书写: if (v_count = 0) and (v_flag = 0) then null; elsif (v_count = 0 ) and (v_flag = 1) then null; elsif (v_count = 1) and (v_flag = 0) then null; elsif (v_count = 1) and (v_flag = 1) then null; end if; 3.9 简简单单循循环环语语句句 LOOP EXIT WHEN END LOOP; 3.10FOR 循循环环语语句句 FOR 变量 IN 变量取值范围 LOOP END LOOP; 3.11WHILE 循循环环语语句句 WHILE LOOP END LOOP; 3.12 程程序序块块规规范范 在 sql 代码块中尽量使用 begin.end 语句块,提高代码可读性。 对于触发器、存储过程、函数等带名的程序块,要使用块结束标识。 oracle 编码规范 中石化南京工程有限公司 - 12 - 如 CREATE OR REPLACE PROCEDURE p_get_userinfo BEGIN END p_get_userinfo;/* 此处的过程名 p_get_userinfo 是可选的,规范要求写上,与 块开始的 CREATE 相对应 */ 3.13 语语法法规规范范 避免隐式的数据类型转换。 说明:在书写代码时,必须确定表的结构和表中各个字段的数据类型,特别是书 写查询条件时的字段就更要注意了。 例如:以下代码不符合规范, status_type 是 number 型数据. select wdj.wip_entity_id from wip.wip_discrete_jobs wdj where wdj.status = 3; 应如下书写: select wdj.wip_entity_id from wip.wip_discrete_jobs wdj where wdj.status = 3; 不要将空的变量值直接与比较运算符(符号)比较。如果变量可能为空,应使用 is null 或 is not null 或 nvl 函数进行比较。 例如:以下代码不符合规范 if v_user_name = null then dbms_output.put_line(user name is null); end if; 应该如下书写: if v_user_name is null then dbms_output.put_line(user name is null); end if; 对于非常复杂的 sql(特别是多层嵌套,带子句或相关的查询 ),应该先考虑是否设 计不当引起的,对于复杂的一些 sql 可以考虑使用程序实现,原则上遵循一句话只 做一件事情。 尽可能地使用相关表字段的类型定义,形如 %type、%rowtype。 oracle 编码规范 中石化南京工程有限公司 - 13 - 存储过程中变量的声明应集中在 as 和 begin 关键字之间,不允许在代码中随意定 义变量,定义变量时,完成相同功能模块的变量应放在一起,与不同模块的变形量 应空行隔开,增加代码的可读性。 order by 后面字段不唯一时分页会出现问题,分页时如果 order by 后面的字段不 唯一,一定要让 order by 唯一,最佳方案是增加一 pk,如实在没办法则可以追加 rowid,order by 后尽量避免使用 rowid。 使用 varchar2 代替 varchar 类型。 当存储过程有多个分支返回时,若有事务,需确保各个分支都结束了事务。 in、out 参数应按类别分开书写,不要交叉,对于 out 参数,特别是 nest table、record,尽量都带上 nocopy,提高程序的运行效率。 聚集函数 max、min、sum 在没有记录得符合查询条件的情况下返回 null,不会产 生 no_data_found 异常。 原则上不要使用动态 sql,如果非得使用运态 sql,须绑定变量。 【推荐】 尽量不要使用子函数方式实现存储过程,应分别定义。 【推荐】 代码中不建议使用 goto 语句。 【推荐】 确保所的变量和参数都使用到。 【推荐】 确保变量和参数在类型和长度与表数据列类型和长度相匹配。如果与表数据列宽度 不匹配,则当较宽或较大的数据传进来时会产生运行异常。 例如:例如:如 fnd_users 表 user_name 字符宽为 50,当用户名大于 10 时会报错。 declare v_user_name varchar2(10); begin select fu.user_name into v_user_name from fnd_user fu where fu.user_id = p_user_id; end; 当一个 PL/SQL 或 SQL 语句中涉及到多个表时,始终使用别名来限定字段名,这 使其它人阅读起来更方便,避免了含议模糊的引用,其中能够别名中清晰地判断出 表名。别名命名时,尽量避逸使用无意义的代号 a、 b、c,而应该有意义 (如 表 system_items_b 对应别名为 msi,po_headers_all 别名对应为 pha)。 例如:例如:以下编码不符合规范: select wip_entity_name,a.wip_entity_id,a.date_released oracle 编码规范 中石化南京工程有限公司 - 14 - from wip.wip_entities b, wip.wip_discrete_jobs a where b.wip_entity_id = a.wip_entity_id and a.status_type = 3 and a.date_released trunc(sysdate) 应如下书写:应如下书写: select we.wip_entity_name, wdj.wip_entity_id, wdj.date_released from wip.wip_entities we, wip.wip_discrete_jobs wdj where we.wip_entity_id = wdj.wip_entity_id and wdj.status_type = 3 and wdj.date_released trunc(sysdate) 4.设计规范设计规范 4.1 一一般般表表设设计计 表空间设计,原则上表空间名与 schema 名一致,其索引所在空间为 schema name + index。 如: schema 为 INV,则默认的表空间应该为 INV,所对应的索引空间为 INVINDEX tablespace每个表在创建时候,必须指定所在的表空间,不要采用默认表空间, 以防止表建立在 system 空间上,导致性能问题。对于事务比较繁忙的数据表,必 须存放在在该表专用空间中。 根据性能需要,可以适当可曾加冗余; 4.2 特特殊殊表表设设计计原原则则 分区表对于数据量比较大的表,根据表数据的属性进行分区,以得到较好的性 能。如果表按某些字段进行增长,则采用按字段值范围攻进行分区;如果表按某个 字段的几个关键值进行分布,则采用列表分区;对于静态表,则采用 hash 分区或 oracle 编码规范 中石化南京工程有限公司 - 15 - 列表分区;在范围分区中,如果数据按某关键字段均衡分由,则采用子分区的复合 分区法。 在分区表中不建议使用全局索引,因为 trunc 分区时会导致全局索引失效,造成难 以维护。 4.3 索索引引设设计计原原则则 每个索引在创建时,必须指定表空间,不要采用默认表空间,以防止索引建立在 system 空间和非索引专用空间,以减少 IO 冲突,提高性能。 4.4 完完整整性性设设计计原原则则 主键约束原则上所有的数据表都要有主键。对于数据量比较大的表,要求指定 索引字段。 外键关联对于关联两个表字段,一般应该分别建立主键、外键。实际是否建立 外键,根据对数据完整性的要求决定。为了提高性能,对于数据量较大的表要求对 外键建立索引。对于有要求级联删除属性的外键,必须指定 on delete cascade. Null 值对于字段能否为 null,应该在 sql 建表脚本中明确指定,不应该使用缺 省。由于 null 值在参加任何计算时,结果均为 null,所以在程序中必须用 nvl()函 数把可能为 null 值的字段或变量转换非 null 的默认值。 Check 条件对于字段有检查性约束,需指定 check 原则。 4.5 触触发发器器 触发器是一种特殊的存储过程,通过数据表的 DML 操作而触发执行,其作用为 确保数据的完整性和一致性不被破坏而创建,实现数据的完整性约束。 说明:触发器的 before 或 after 事务属性的选择时候,对表操作的事务属性必须 与应用程序保持一致,以避免死锁发生,在大型导入表中,尽量避免使用触发器。 在系统中不要使用过多的触发器。 4.6 视视图图设设计计 尽量使用简单的视图,避免使用复杂的视图。 简单视图:数据来自单个表,且无分组 (distinct/group by)、无函数。 复杂视图:数据来自多个表,或有分组、有函数。 4.7 性性能能优优化化 避名频繁 commit,尤其是把 commit 写在循环体中每次循环都进行 commit。 使用绑定变量,避免常量的直接引用。 例如:以下书写不符合本规范 . insert into sm_users(user_id,user_name,created_by,creation_date) values oracle 编码规范 中石化南京工程有限公司 - 16 - (1,Tang,-1,sysdate); 建议用如下方式操作:建议用如下方式操作: declare v_user_id sm_users.user_id%type; v_user_name sm_users_user_name%type; v_created_by sm_users.created_by%type; v_creation_date sm_users.creation_date%type; begin insert into sm_users( user_id, user_name, created_by, creation_date) values( v_user_id, v_user_name, v_created_by, v_creation_date); in、exists 的使用规范 例如:例如:当有 A、B 两个结果集,当结果集 B 很大时, A 较小时,适用 exists,如: select * from a where exists(select 1 from b where a.column = b.column); 当结果集当结果集 A 很大时,很大时, B 很小时,适用很小时,适用 in,如:如: select * from a oracle 编码规范 中石化南京工程有限公司 - 17 - where a.column in ( select b.column from b ) 避免不必要的排序 说明:说明:对查询结果进行排序会大大的降低系统的性能。 对于数字型的唯一键值,用序列 sequence 产生。 索引的规则: 建立索引常用的原则如下:建立索引常用的原则如下: 1).表的主键、外键必须有索引 2).1000 行的表应该有索引 3).经常与其它表进行连接的表,在边接字段上应建立索引 4).经常出现在 where 子句中的字段且过滤性极强的,特别是大表的字段,应该 建立索引 5).索引字段,尽量避免值为 null 6).复合索引的建立需要仔细分析;尽量考虑用单字段索引代替; A.正确选择复合索引中的第一个字段,一般是选择性较好的且在 where 子句中常的字段上; B.复合索引的几个字段是否经常同时以 and 方式出现在 where 子句中? 单字段查询是否极少其至没有?如果是,则可以建立复合索引;否则考虑 单字段索引; C.如果复合索引中包含的字段经常单独出现在 where 子句中,则分解为 多个单字段索引; D.如果复合索引所包含的字段超过 3 个,那么仔细考虑其必要性,考虑 减少复合的字段; E.如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除 复合索引; 7).频繁 DDL 的表,不要建立太多的索引; 8).删除无用的索引,避免对执行计划造成负面影响; 让 SQL 语句用上合理的索引。 oracle 编码规范 中石化南京工程有限公司 - 18 - 原则如下:原则如下: 首先,首先,看是否用上了索引,对于该使用索引而没有用上索引的 SQL 语句,应该想 办法用上索引。 其次,其次,看是否用上了索引,特别复杂的 SQL 语句,当其中 where 子句包含多个带 有索引的字段时,更应该注意索引的选择是否合理。错误的索引不仅不会带来性能的 提高,相反往往导致性能的降低。 针对如何用上合理的索引,以 Oracle 数据中的例子进行说明: 任何对列的操作都可能导致全表扫描,这里所谓的操作包括数据库函数、计 算表达式等等,查询时要尽可能将操作移至等式的右边,甚至去掉函数。 避免不必要的类型转换,要了解“隐藏”的类型转换。 增加查询的范围,限制全范围的搜索。 索引选择性低,但数据分布差异很大时,仍然可以利用索引提高效率。 Oracle 优化器无法用上合理索引的情况下,利用 hint 强制指定索引。 使用复合索引且第一个索引字段没有出现在 where 中时,建议使用 hint 强制。 pl/sql 使用短路径法,当计算逻辑表达式,即:一旦确定后, pl/sql 停止计算表达 式。 【推荐】 not in 的替换写法【推荐】 例如: select deptno from dept where deptno not in (select deptno from emp) 建议写成:建议写成: select deptno from dept, emp where dept.deptno = emp.deptno(+) and emp.deptno is null oracle 编码规范 中石化南京工程有限公司 - 19 - like 子句尽量前端匹配【推荐】 like 参数使用得非常频繁,因此如果能够对于 like 子句使用索引,将很好地提高查询 的效率。 例如:例如:查询城市代码 select * from city where city_name like %ZHEN% 修改为修改为 select * from city where city_name like SHNEZHEN% 避免使用 select * 语句。 说明:不要用 *来代替所有字段,应给出字段列表,注:不包含 select coun(*).例例 如:如:以下不符合规范: insert 语句必须给出字段列表,使用 insert 语句一定要给出要插入的字段列表,这 样即使更改了表结构加了字段也不会使用引用了本表的存储过程失效。 从表中同一笔记录中获取记录的字段值,须使用同一 SQL 语句得到,不允许分多 条 SQL 语句。 例如:例如:以下不符合此规范 select duty_id into v_duty_id from sm_duty where rownum=1; select duty_name into v_duty_name from sm_duty where rownum=2; 应如下书写:应如下书写: select duty_id,duty_name oracle 编码规范 中石化南京工程有限公司 - 20 - into v_duty_id,v_duty_name from sm_duty where rownum=1 5.书写规范书写规范 5.1 缩缩进进风风格格 程序块采用缩进风格书写,保证代码清晰易读,风格一致,缩进格数统一为 2 个。 必须使用空格,不允许使用 TAB 键。 具体语句参考“编码规范”小节 5.2 空空格格及及换换行行 不允许把多个语句写在一行中,即一行只写一条语句。 例如:以下书写不符合规范: v_count :=1; v_creation_date := sysdate; 应写成:应写成: v_count := 1; v_creation_date := sysdate; 相对独立的程序块之间必须加空行。两个程序块在逻辑上相对独立,应用空行加以 分隔,同时增加注释。 超过 80 列的语句要分行书写,长表达式应在低先级操作符处换行,操任符或关键 字放在新行之首。划分出新行应当适当地缩进,使排版整齐,语句可读。 begin、end 独立成行 例如:例如:以下不符合规范 begin null; exception when others then null; end; 应写成:应写成: begin null; exception when others then null; oracle 编码规范 中石化南京工程有限公司 - 21 - end; 6.注释说明注释说明 6.1 一一般般性性注注释释 注释尽可能简洁、详细而全面。 创建每一数据库对象时都要加上 COMMENT ON 注释,以说明该对象的功能 和用途;建表时,对某些数据列也要加上 COMMENT ON 注释,以说明该列 和/或列取值的含义。如:XX 表中有 CZZT 列属性为 NUMBER(10,0)可加 COMMENTON 注释如下 COMMENT ON COLUMN XX.CZZTIS0=正常,1=等 待,2=超时,3=登出 在 pl/sql 中,为每个变量声明添加注释,说明该变量用途。 在块的每个主要部分之前增加注释,说明该段语句及算法的目的以及要得到的 结果。 注释语法包含两种情况:单行注释、多行注释 单行注释:注释前有两个连字符(-) ,一般对变量、条件子句可以采用该 类注释。 多行注释:符号/*和*/之间的内容为注释内容。对某项完整的操作建议使 用该类注释。 6.2 函函数数文文本本注注释释 在每一个块和过程(存储过程、函数、包、触发器、视图等)的开头放置注释。 /* 函数名称: 功能描述: 输入参数: 输出参数:无 返 回 值:无 创建者: 创建时间:2013-06-20 -修改记录- 修改人员: 修改时间: 修改内容: */ CREATE ORREPLACE PROCEDURE dfsp_xxx oracle 编码规范 中石化南京工程有限公司 - 22 - 传入参数的含义应该有所说明。如果取值范围确定,也应该一并说明。取值有特定 含义的变量(如 boolean 类型变量) ,应给出每个值的含义。 在每一个变量声明的旁边添加注释。说明该变量要用作什么,通常,简单使用单行 注释就行了,例如 l_sfhCHAR(11)-身份证号码。 在块的每个主要部分之前添加注释 在块的每个主要部分之前增加注释,解释下组语句目的,最好是说明该段语句 及算法的目的以及要得到的结果,但不要对其细节进行过多的描述 在块和过程的开头注释中还可以增加要访问的数据库等信息 7.异常规范异常规范 7.1pl/sql 异异常常规规范范 对于存储过程、函数等程序块都要有异常处理部分,以提高程序的自检能力。 异常节格式如下: -自定义异常 my_err EXCEPTIONEXCEPTION; -抛出自定义异常 RAISERAISE my_err; -异常节 EXCEPTIONEXCEPTION WHENWHEN my_err THENTHEN WHENWHEN no_data_found THENTHEN -系统预定义异常 WHENWHEN others THENTHEN ENDEND; 在异常节的最后都要设置 others 异常处理,它处理所有没有明确列出的异常。 项目开发阶段,为了调试方便、快速定位错误,可以创建 xtycxx(系统异常信息) 表,记录产生系统异常的存储过程或函数名、异常名,如果过程或函数中有多个程序 块,记录块的描述信息。 例如 EXCEPTIONEXCEPTION WHENWHEN no_data_found THENTHEN INSERTINSERT INTOINTO xtycxx (ccmc,ycmc,ms) VALUESVALUES (ap_name , no_data_found , 获取操作文档编号); oracle 编码规范 中石化南京工程有限公司 - 23 - WHENWHEN others THENTHEN INSERTINSERT INTOINTO xtycxx (ccmc,ycmc,ms) VALUESVALUES (ap_name , others , 获取操作文档编号); RETURNRETURN; ENDEND; 7.2 后后台台验验证证异异常常信信息息规规范范 使用数据库过程、函数进行后台数据验证时,发现异常情况,需要记录异常,并返 回到用户界面。 异常信息描述要求简洁、准确、完整,揭示异常实质,准确定位异常出现的位置。 异常分为警告和错误两类。 由于每个实际项目,业务不同,异常信息也变化很大。每个项目开始时根据需求, 统一进行定义。 8.附录附录 8.1 附附一一 开开发发工工具具 Oracle 开发工具使用。 【推荐】 项目开发统一使用集成的开发环境 pl/sql developer 作为开发工具,用于开发、测试、 调试和优化 pl/sql 存储程序单元。 项目组成员使用 pl/sql developer 的美化器功能,选取统一的规则文件,自动美化。 多人编写的代码具有相同的书写格式,风格统一。查询语句还可最大化重用共享池中 的 sql 语句,提高应用程序性能。 以下工具可以做为参考工具: 1、编码工具、编码工具: ultraedit - 32 全称: UltraEdit 32 Professional Text/Hext Editor 公 司:IDM Computer Solutions, Inc.网址: / 2、测试工具、测试工具 : pl/sql developer 全称: pl/sql developer 公司: Allround Automations 网址: /plsqldev.html 3、调试工具:、调试工具: toad 全称: Quest Toad for Oracle 公司: Quest Software 网址: / 4、调试工具:、调试工具: sqldeveloper 全称: sqldeveloper 公司: Oracle oracle 编码规范 中石化南京工程有限公司 - 24 - 网址: /technology/products/database/sql_developer/ 8.2 附附二二 预预定定义义异异常常 Oracle 预定义异常:【推荐】 预定义系统异常预定义系统异常产生原因产生原因 ACCESS_INTO_NULL 未定义对象 CASE_NOT_FOUND CASE 中若未包含相应的 WHEN ,并且没有设置 ELSE 时 COLLECTION_IS_NULL 集合元素未初始化 CURSER_ALREADY_OPEN 游标已经打开 DUP_VAL_ON_INDEX 唯一索引对应的列上有重复的值 INVALID_CURSOR 在不合法的游标上进行操作 INVALID_NUMBER 内嵌的 SQL 语句不能将字符转换为数字 NO_DATA_FOUND 使用 select into 未返回行,或应用索引表未初始化

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论