Oracle存储过程开发规范与技巧.docx
《Oracle存储过程开发规范与技巧.docx》由会员分享,可在线阅读,更多相关《Oracle存储过程开发规范与技巧.docx(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Oracle存储过程开发规范与技巧Oracle 存储过程开发规范与技巧开发规范 1. 书写规范 1 :程序头书写规范 程序头起先部分应说明程序整体的功能,储备过程名称,编写人,编写日期,修改人,修改日期,版本号以及过程涉及的表和视图。例如如下:- /* 名称及实现功能:版本: ( 版本号标示:新建 V1.0.0小的修变更为V1.0.1 大的修改V1.1.0 重构V2.0.0) Create by * Create Date 2006-06-29 Updateby *updateDate 2006-06-30 修改原因: Updateby *updateDate 2006-06-31 修改原因:
2、涉及的表或视图:dump_init协助表(DM):记录储备过程中运用的物化视图日志序号 mlog$_acrcusmrsecindex 源表(ODS):客户第一索引物化视图日志,运用同义词 ft_gld_customerdata目标表(DM):客户事实表 */ CREATE OR REPLACE PROCEDURE* - 2 :代码书写规范 1. 语句中显现的全部表名、字段名全部小写,系统保留字、内置函数名、Sql 保留字大写。2. 连接符 or、in、and、以及、lt;=、gt;=等前后加上一个空格。3. where 子句书写时,每个条件占一行,语句令起一行时,以保留字或者连接符起先,连接符
3、右对齐。4. 查询的 WHERE 过滤,原那么应使过滤记录数最多的条件放在最前面。5. 多表连接时,运用表的别名来引用列。6. 查找数据库表或视图时,只能取出的确须要的那些字段,不要运用*来代替全部列名。7. 功能相像的过程和函数,尽量写到同一个包中,加强治理。例如如下:BEGIN-查询职员及对应的部门名称 SELECT emp.name, dept.name FROM l_dept dept, l_employee empWHERE emp.dept_id = dept.dept_id; END; 3 注释书写规范 为了提高可读性,应当运用肯定数量的注释。注释大约占总行数的 1/5。1:注释
4、风格:注释单独成行、放在语句前面。2:应对不易明白得的分支条件表达式加注释; 3:对重要的运算应说明其功能; 4:过长的函数实现,应将其语句按实现的功能分段加以概括性说明; 5:每条 SQL 语句均应有注释说明 6:关于程序的整体功能,应在程序起先部分说明,可接受单行/多行注释。- 或 /* */ 方式 2. 命名规范 命名对象 规那么 样例 储备过程、包、方法 1 业务相关以模块代码开头 gld_assist_check_p2 假如区分全量和增量,在最终加标识 gld_load_to_etl gld_load_to_etl_full3 全局运用,以 global 开头 global_proc
5、edure_check变量 以 v 开头 v_updatemode1游标 以 c 开头 c_tablist内存表 以 m 开头 m_table1 临时表 以 t 开头 t_tmpTable储备过程技术 1 储备过程样例 CREATE OR REPLACE PROCEDURE example (v_inputIN NUMBER, -输入参数v_outputOUTNUMBER -输出参数 ) IS PRAGMA AUTONOMOUS_TRANSACTION;CURSOR c1-定义一个游标,在begin之前IS SELECTb.tablename mlogtable,MAX (remarks)KE
6、EP (DENSE_RANK LAST ORDER BY starttime) remarks FROM proc_log a, table_proc b WHERE TO_CHAR (starttime, yyyy-mm-dd) lt;= -转换时刻并做比较TO_CHAR (SYSDATE - TO_DSINTERVAL (TO_CHAR (intervaldays) | 00:00:00), yyyy-mm-dd )AND a.remarks LIKE SUCCEEDED:%AND a.procedurename = b.procedurename GROUP BY b.tablename
7、);-定义终止 c1_recc1%ROWTYPE;-定义同意游标数据行的ROWTYPEv_mlogtable VARCHAR (30);v_postperiodCHAR (2);v_acctbalbeginseq NUMBER;v_systime DATE;BEGINv_input := 0;-变量赋值v_systime := SYSDATE;OPEN c1;-打开游标LOOP -循环 FETCH c1 INTO c1_rec; -从当前游标行赋值c1_rec EXIT WHEN c1%NOTFOUND; -游标没有数据退出 v_mlogtable := c1_rec.mlogtable;-从
8、行取出详细数据赋给变量CASE TRIM (LOWER (v_mlogtable)-CASE起始WHENString1-当条件一THEN -做条件一工作 BEGINv_remarks := REPLACE (v_remarks, AA); END;WHEN String2 -当条件二THEN BEGIN END;ELSE -其他条件 NULL; END CASE; -CASE终止IF (LOWER (SUBSTR (v_mlogtable, 1, 5) lt;gt; mlog$) THENSELECT log_tableINTO v_mlogtableFROM user_snapshot_lo
9、gs WHERE LOWER (MASTER) = LOWER (v_mlogtable); END IF; EXECUTE IMMEDIATEdelete from | v_mlogtable | where sequence$ lt;= | TO_CHAR (v_lognum);EXIT WHEN 1gt;2;-循环跳出条件END LOOP; -循环终止 CLOSE c1; -关闭游标 EXCEPTION WHEN OTHERS THENROLLBACK;global_procedure_check.check_end (checkdataerror01,v_systime,1,SQLCO
10、DE | | SQLERRM );RAISE;RETURN;END; END example; 2 差不多学问 1) 差不多结构 - CREATE OR REPLACE PROCEDURE exampleparameters-过程声明区 IS - v_1 NUMBER;-过程中变量声明区- BEGINv_1 := 0; -过程内容区 END example; -2) 差不多类型 CHAR 固定长度字符类型VARCHAR2可变长字符类型 VARCHAR可变长字符类型(不建议运用) NUMBER一切数值类型 DATE 一切日期类型3) 参数 三种:IN 输入参数,OUT 输出参数,IN OUT 输
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 存储 过程 开发 规范 技巧
限制150内