您好,欢迎来到华佗养生网。
搜索
您的当前位置:首页Oracle存储过程编码指南

Oracle存储过程编码指南

来源:华佗养生网
Oracle存储过程编码规范

RD

中国民航信息网络股份有限公司制度

研发中心

Oracle存储过程编码规范

文件编号:

版 本 号:VER 1.0.0

编制部门: 编制人: 审批人:

中国民航信息网络股份有限公司研发中心产品开发部 章秀静 XXX

编制日期: 审批日期:

2009.04.10 2009.**.**

Oracle存储过程编码规范

变 更 记 录

修改 原因 修改 目的 修改人/日期 审批人/日期 修改后的版本号 序号 修改内容 实施日期

Oracle存储过程编码规范

目 录

目 录 .............................................................................................................................................. III 1. 编写目的 ........................................................................................................................... 1 2. 适用范围 ........................................................................................................................... 1 3. 规范内容 ........................................................................................................................... 1 3.1. 命名规范 ............................................................................................................................ 1 3.1.1. 存储过程名称 .................................................................................................................... 1 3.1.2. 存储过程的输入输出参数 ................................................................................................ 1 3.1.3. 变量的命名 ........................................................................................................................ 1 3.1.4. 参数的命名 ........................................................................................................................ 2 3.2. 注释信息 ............................................................................................................................ 3 3.2.1. 开头注释 ............................................................................................................................ 3 3.2.2. 变量初始化 ........................................................................................................................ 4 3.2.3. 程序主体 ............................................................................................................................ 4 3.2.4. 程序主体的注释 ................................................................................................................ 4 3.3. 错误处理 ............................................................................................................................ 4 3.3.1. 存储过程的异常处理的原则 ............................................................................................ 4 3.3.2. 程序成功处理(必须) .................................................................................................... 4 3.3.3. 特定错误处理(可选) .................................................................................................... 5 3.3.4. 异常处理(必须) ............................................................................................................ 5 3.4. 其它规范 ............................................................................................................................ 6 3.4.1. 回滚操作说明 .................................................................................................................... 6 3.4.2. 调用后台程序的参数处理及其他约定 ............................................................................ 6 附录A 部分编程常用单词缩写 ..................................................................................................... 9 附录B 主要模块英文缩写名 ....................................................................................................... 10

Oracle存储过程编码规范

1. 编写目的

规范项目SP代码的编写,保证程序风格的同一性和一致性。

2. 适用范围

适用于企业所有Oracle 系列数据库SP程序的软件开发工作。

3. 规范内容

3.1. 命名规范 3.1.1. 存储过程名称

采用“p+模块名一位缩写+功能描述”的格式命名;如 p_YWRTJOB。

3.1.2. 存储过程的输入输出参数

存储过程根据需要自行决定参数的数目、类型和长度;

对于需要提交给任务管理器调用的存储过程,为了保证任务管理器的统一调度;需要用另外一个存储过程进行封装,该封装sp的输入参数采用i_parm命名,输出变量采用o_parm来命名,类型为varchar2(80), 如长度需要超过80,提交讨论,原则不应大于200。只能有一个输入和一个输出参数,输出参数的第一位是„O‟(OK)或者„E‟(ERROR),第2位开始开始直接写错误信息(如果正确返回,从第2位开始可以写返回信息,内容不作要求),用该sp来调用具体实现业务操作的存储过程。

3.1.3. 变量的命名

所有的变量采用格式为:变量前缀_变量描述。 一般变量的前缀使用类型的缩写: NCHAR:nc

CHAR:c

VARCHAR2: vc NVARCHAR2: nvc NUMBER: n DATE: d

第 1 页

Oracle存储过程编码规范

ROWID: rid UROWID: urid BINARY_INTEGER: bi PLS_INTERGER: pi BOOLEAN:b BLOB: blb CLOB: clb NCLOB: nclb BFILE: bfl

例如:vc_StnName、n_FlightDate。 游标变量:前缀为cur。存放游标记录集。 记录型变量:前缀为rec。 存放记录型数据。 表类型变量:前缀为tab。 存放表类型数据。

3.1.4. 参数的命名

参数命名规范为: 参数方向缩写_变量名。参数方向缩写的缩写如下: IN: i OUT:o INOUT:io

例如: i_n_FlightDate

o_vc_AgentID

注意:需要被作业管理调用的封装过的存储过程,其参数是已经规定好的,不遵循本命名规范。

第 2 页

Oracle存储过程编码规范

3.2. 注释信息 3.2.1. 开头注释

---------------------------------------------------------------------------------------------------------- -- -- PROCEDURE NAME

--

: SALMCH (SAMPLE) --

-- NAME IN SYSMTH :SALMCH -- -- -- DESCRIPTION --

--

: SQL PROCEDURE TEMPLATE -- FOR NEW DOMESTIC DEVELOPMENT --

: NONE

--

-- INVOKE

-- TYPE : BATCH/SCH/ONLINE -- -- -- PROGRAMMED BY : ARK -- MODIFIED BY -- MODIFIED BY

: ARK : ARK

--

DATE 2004/04/09 -- DATE 2004/04/10 -- DATE 2004/05/09 --

--

--

-- COPYRIGHT 1997~2005 ACCA-ARKO -- --

--

-----------------------------------------------------------------------------------------------------------

说明:

PROCEDURE NAME:见前面命名规范;

NAME IN SYSMTH: 指出该存储过程在作业控制表中的对应名称; DESCRIPTION:存储过程功能说明;

INVOKED:此存储过程调用了哪个(些)存储过程,“NONE”表示此存储过程没有调用其它程序,空白 表示还不确定;一般地,当程序编写、测试完毕,这个地方不允许为空白;

PROGRAMMED BY:存储过程编写人员,及编写日期; MODIFIED BY:存储过程修改人员及修改日期,可写多行;

TYPE:程序的类型,分为三种:批处理、自动作业、联机调用,英文分别为BATCH\\SCH\\ONLINE;

自动作业:所有自动作业的头程序是自动作业类型;

批处理:提交给作业管理器进行管理的异步作业是批处理类型; 第 3 页

Oracle存储过程编码规范

联机调用:其他后台程序都是联机调用类型,如前台直接调用的程序,后台间调用的非主程序和非头程序。

3.2.2. 变量初始化

例: vc_Prf n_TKT

varchar2(4) number(7,0)

DEFAULT „ ‟; DEFAULT 0; DEFAULT „ ‟;

vc_BTHNUM varchar2(11)

3.2.3. 程序主体

如果调用SP程序:

调用某一个程序之后,检查执行的成功标志,如果成功,继续执行; 如果失败,应将被调用程序的输出参数赋给当前程序的输出参数(有事务的要回滚),程序退出;当是其他值时,应特殊处理这些特定的错误,或退出或继续处理或回滚。

3.2.4. 程序主体的注释

注释的原则是有助于对程序的阅读理解,注释不宜太多也不能太少,太少不利于代码理解,太多则会对阅读产生干扰,因此只在必要的地方才加注释,而且注释要准确、易懂、尽可能简洁。注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句的注释)相邻位置,不可放在下面。

对于所有的变量、数据结构声明,如果其命名不是充分自注释的,在声明时都必须加以注释,说明其含义。

对重要代码段的功能、意图进行注释,提供有用的、额外的信息。并在该代码段的结束处加一行注释表示该段代码结束。

维护代码时,要更新相应的注释,删除不再有用的注释。保持代码、注释的一致性,避免产生误解。

3.3. 错误处理

3.3.1. 存储过程的异常处理的原则

在程序的最后要写exception来处理异常。

3.3.2. 程序成功处理(必须)

所有存储过程都必须返回成功标志,对于由作业管理器调用的sp,只有一个返回参数,返回参数的第一位赋为‟O‟,第2-5位统一0000,表示“程序执行成功”,第6-80位其它返回参数,进行其它所需操作,同时程序退出。

第 4 页

Oracle存储过程编码规范

3.3.3. 特定错误处理(可选)

特定错误是指错误是已知的,可预知的,一般反映的是业务逻辑的错误。 1. 对于由作业管理器调用的sp(只有一个传入参数i_parm和一个返回参数

o_parm)自定义返回参数第一位,第2-5位为自定义的4位序号(要在表SYSMSG中查找和注册),4位序号定义不同的中文描述,同时组合其它返回参数在6-80,

2. 进行其它所需的业务要求的操作。 3. 回滚事务,使用ROLLBACK。 4. 程序退出。

3.3.4. 异常处理(必须)

1. 采用声明异常过程来处理,

2. 对于由作业管理器调用的sp,其返回参数第一位赋为‟E‟,第2-5位为统一的

0001,表示“程序执行异常”,第6-80位推荐跟相应的异常详细信息;其他的sp可以定义输出参数来传递程序异常信息。

3. 出异常时必须根据出错信息写日志文件,该步骤通过调用SYWRTLOG程序

来实现。

p_ycallwrtlog的第一个参数写存储过程名称,最后一个参数是输出参数。其中第三个参数是当前存储过程的输入参数(如票号),可能有同事输入参数是record或者cursor什么,请选择其中重要部分记录,注意第三位的长度最大允许长度为500。 exception when others then

p_ycallwrtlog('P_CUIADD', sqlcode || sqlerrm, i_vc_prf || '|' || i_n_cpn || '|' || i_vc_frm || '|' || i_vc_tkt || '|' || i_vc_flag, o_vc_returnflag);

有关作业:

如果作业调用的是存储过程,可能由于统一commit导致运行过程中无法读取作业进度,这种情况请调用P_YWRTJOBGAG( i_n_date in number,i_n_time in number,i_vc_name

in

varchar2,i_n_gag

in

number)

P_YWRTJOBGAGSIMPLE(i_vc_name in varchar2,i_n_gag in number)来写作业进度,后一个存储过程仅适用于自我互斥(只允许同时运行一个)的作业。这两个存储过程使用自治事务。

4. 回滚事务,使用ROLLBACK。 5. 然后,程序退出。

第 5 页

Oracle存储过程编码规范

3.4. 其它规范 3.4.1. 回滚操作说明

这里的回滚操作,即在事务处理中,使允许此存储要么被成功执行,要么什么都没做。

 在编写存储过程时,可以显示使用COMMIT和ROLLBACK进行事务的控

制,推荐在存储过程中使用事务处理。

3.4.2. 调用后台程序的参数处理及其他约定

3.4.2.1 联机调用程序

即等待系统响应返回结果的程序。

 通过一个DRAS2005.DATA.DATAACCESS类中的函数ExecuteProcedure来

调用所有后台联机程序。参数有“程序名,输入参数,输出参数。” 3.4.2.2 批处理程序

异步调用后台程序,即提交一个作业。

 存储过程可能返回的参数头五位为“O0000”、”E0001”、“?????”,?表示自定

义代码。

 批处理程序统一被作业管理器控制和运行。

 由于响应时间要求不高,作业管理器在处理返回值时,可以从SYSMSG中

取出相应的中文描述,同原有的返回值复合形成作业的返回值。  所有批处理程序必须在SYSMTH中注册,具体内容见下面的规范。  通过一个DRAS2005.DATA.类中的函数ADDJOB来提交批处理作业,参数

有“作业标示,输入参数,提交用户” 3.4.2.3 自动作业

自动作业是指可由用户定义定时运行的批处理作业。

 任何自动作业都对应一个批处理程序,存储过程除调用一个批处理程序外,

然后还将调用sywrtjob写入sysjob中该作业的状态信息和出错信息。  所有自动作业头程序必须在SYSMTH中注册,具体内容见下面的规范。  自动作业通过前台界面进行设置和提交。 3.4.2.4 其他规范  日期转换说明:

由于数据库定义时日期格式为YYYYMMDD的数值型,需要将时间转换成数值类型,参照以下取系统时间的范例:

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') into vc_date from dual; 第 6 页

Oracle存储过程编码规范

vc_time :=substr(vc_date,12,8);

vc_day :=substr(vc_date,1,4)||substr(vc_date,6,2)||substr(vc_date,9,2);  对于长时间的批处理程序,可以考虑调用sywrtbar,使得用户可以了解程序

执行的进程。

 所有存储过程都保存在数据库上和VSS各一份,顺序是先在数据库中保存,

再放入VSS进行控制;

 SYSMTH注册规范:目前手工注册,以后利用运行环境的界面进行注册。

1) 每一个需要作业管理器管理的SYSMTH中注册,从而避免在程序中

HARDCODE.

2) 包括三种类型的作业:批处理程序BATCH,自动作业SCH,前台程序

DOTNET。

3) SYSMTH需要注册的内容:

YMTNAM:作业标示,10位,记录作业名的标示,主键,作业提交时使用,一般可以同程序名相同,或模块名+含义缩写。

YMTDCP:作业描述,80位,40个中文,如:销售校验处理程序。 YMTPGM:程序名,30位,实际调用的头程序名。(应写实际封装后的程序名)

YMTCLA:前台程序使用的类名。

YMTSTS:作业类型:BATCH,SCH,DOTNET. YMTUSR:程序人员

YMTTYP:要提交的队列名。共有12个,DRAS+模块名+Q。 YMTIND:注册时间 YMTLSR:修改人员 YMTLCD:修改时间

 程序SYWrtlog、SYWrtjob、SYWrtbar的调用说明如下:

SYWRTJOB: 自动作业的头程序中需要。 输入参数: varchar2(200),

1-8 程序开始日期 9-16 程序开始时间 17-46 作业标示名

47-54 作业运行队列名称。(DRASXXXQ,XXX为模块名。) 55-134 输出参数,异常/其他描述:必须传入自动作业头程序调用的程序的输出参数。

第 7 页

Oracle存储过程编码规范

136-200 空

SYWRTLOG:

输入参数: varchar2(200),

1-30 程序名称(要硬编码)

31-110 错误描述 (按照例程是将SQLSTATE和错误信息连接

起来,最好和输出参数的后75位共用)

111-200空

SYWRTBAR:

输入参数: varchar2(80)

1-30 作业标示名 31-33 程序进程(0-100)

所有输出参数可为空格。

第 8 页

Oracle存储过程编码规范

附录A 部分编程常用单词缩写

规则:基本按照cl命令的缩写,较短的单词可通过去掉“元音”形成缩写,较长的单词可取单词的头几个字母形成缩写,一些单词有大家公认的缩写: 完整单词 缩写 完整单词 缩写 A M average avg manager mngr(mgr) message msg B back bk N background bg number num C O color cr(clr) Oracle Ora control ctrl P create crt password pwd change chg picture pic point pt D data dat position pos date print prn delete dlt program prg display dsp physical file member pfm E R edit edt record rcd error err record number rcdnum result reslt F flag flg S form frm server srv from library flib source src statistic stat G grid grd string str Sybase Syb I increment inc send snd information info T initial init temp tmp insert ins text txt image img to library tlib L U label lab user usr length len user id usrid list lst W library lib window wnd(win) work with wrk 第 9 页

Oracle存储过程编码规范

附录B 主要模块英文缩写名

MAS ADC SAL PRP UPL IWB PBL MCH ADJ RPT SYS INT CPS PCB

主文件模块 空白票模块 销售模块 分摊模块 运输模块 审核模块 对外开账模块 配比模块 调整模块 报表模块 系统管理模块 数据接口模块 货运分摊 对外开帐 M A S P U I B C D R Y N 第 10 页

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo7.cn 版权所有 湘ICP备2022005869号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务