欢迎来到天天文库
浏览记录
ID:52738303
大小:263.00 KB
页数:35页
时间:2020-03-30
《Oracle存储过程开发规范与技巧.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、存储过程开发规范与技巧开发规范1.书写规范1):程序头书写规范程序头开始部分应说明程序整体的功能,存储过程名称,编写人,编写日期,修改人,修改日期,版本号以及过程涉及的表和视图。示例如下:-----------------------------------------------------------------------------/*名称及实现功能:版本:(版本号标示:新建V1.0.0小的修改变为V1.0.1大的修改V1.1.0重构V2.0.0)Createby***CreateDate2006-06-29Update
2、by***updateDate2006-06-30修改原因:Updateby***updateDate2006-06-31修改原因:涉及的表或视图:dump_init辅助表(DM):记录存储过程中使用的物化视图日志序号mlog$_acrcusmrsecindex源表(ODS):客户第一索引物化视图日志,使用同义词ft_gld_customerdata目标表(DM):客户事实表*/CREATEORREPLACEPROCEDURE*******---------------------------------------------
3、---------------------------------2):代码书写规范1.语句中出现的所有表名、字段名全部小写,系统保留字、内置函数名、Sql保留字大写。2.连接符or、in、and、以及=、<=、>=等前后加上一个空格。3.where子句书写时,每个条件占一行,语句令起一行时,以保留字或者连接符开始,连接符右对齐。 4.查询的WHERE过滤,原则应使过滤记录数最多的条件放在最前面。5.多表连接时,使用表的别名来引用列。6.查找数据库表或视图时,只能取出确实需要的那些字段,不要使用*来代替所有列名。7.功能相似的过
4、程和函数,尽量写到同一个包中,加强管理。示例如下:BEGIN--查询员工及对应的部门名称SELECTemp.name,dept.nameFROMl_deptdept,l_employeeempWHEREemp.dept_id=dept.dept_id;END;3)注释书写规范为了提高可读性,应该使用一定数量的注释。注释大约占总行数的1/5。1:注释风格:注释单独成行、放在语句前面。 2:应对不易理解的分支条件表达式加注释;3:对重要的计算应说明其功能;4:过长的函数实现,应将其语句按实现的功能分段加以概括性说明;5:每条SQL语
5、句均应有注释说明6:对于程序的整体功能,应在程序开始部分说明,可采用单行/多行注释。(--或/**/方式)2.命名规范命名对象规则样例存储过程、包、方法1业务相关以模块代码开头gld_assist_check_p2如果区分全量和增量,在最后加标识gld_load_to_etlgld_load_to_etl_full3全局使用,以global开头global_procedure_check变量以v开头v_updatemode1游标以c开头c_tablist内存表以m开头m_table1临时表以t开头t_tmpTable存储过程技术
6、1.存储过程样例CREATEORREPLACEPROCEDUREexample(v_inputINNUMBER,--输入参数v_outputOUTNUMBER--输出参数)ISPRAGMAAUTONOMOUS_TRANSACTION;CURSORc1--定义一个游标,在begin之前ISSELECTb.tablenamemlogtable,MAX(remarks)KEEP(DENSE_RANKLASTORDERBYstarttime)remarksFROMproc_loga,table_procbWHERETO_CHAR(sta
7、rttime,'yyyy-mm-dd')<=--转换时间并做比较TO_CHAR(SYSDATE-TO_DSINTERVAL(TO_CHAR(intervaldays)
8、
9、'00:00:00'),'yyyy-mm-dd')ANDa.remarksLIKE'SUCCEEDED:%'ANDa.procedurename=b.procedurenameGROUPBYb.tablename);--定义结束c1_recc1%ROWTYPE;--定义接受游标数据行的ROWTYPEv_mlogtableVARCHAR(30);v_postper
10、iodCHAR(2);v_acctbalbeginseqNUMBER;v_systimeDATE;BEGINv_input:=0;--变量赋值v_systime:=SYSDATE;OPENc1;--打开游标LOOP--循环FETCHc1INTOc1_rec;--
此文档下载收益归作者所有