Oracle 高效SQL编程指南 V11

Oracle 高效SQL编程指南 V11

ID:47162218

大小:242.39 KB

页数:43页

时间:2019-08-14

Oracle 高效SQL编程指南 V11_第1页
Oracle 高效SQL编程指南 V11_第2页
Oracle 高效SQL编程指南 V11_第3页
Oracle 高效SQL编程指南 V11_第4页
Oracle 高效SQL编程指南 V11_第5页
资源描述:

《Oracle 高效SQL编程指南 V11》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、EI产品线协同办公组数据库高效编程指南Confidential(秘密)协同办公组数据库高效编程指南2010.10WrittenByTalkwebTalkweb湖南拓维信息系统有限公司1996,2009AllRightsReservedTW_PROC_DS_303第43页共43页EI产品线协同办公组数据库高效编程指南文档标识:TW_PROC_DS_303当前版本:V1.1当前状态:草稿ü发布日期:发布修改历史日期版本作者修改内容评审号变更控制号2010/10/111.0熊坚新建2011/08/231.1陈虹

2、君修改增加完善TW_PROC_DS_303第43页共43页EI产品线协同办公组数据库高效编程指南写在前面的话规范SQL书写方式,让SQL可以共享,这是大家必须遵守的原则,但后续谈到的所有高效SQL编写原则,都只是建议与一般规则,具体执行还得看SQL执行计划,所以"高效的可能也不一定高效"TW_PROC_DS_303第43页共43页EI产品线协同办公组数据库高效编程指南第1章常用语法1.1变量声明原则:代码中声明与表的字段相对应的变量时,应保证变量名和字段名相同。说明:这样要求的目的是增强可读性。示例:DE

3、CLAREv_DateFieldT_TABLENAME.DATEFIELD%TYPE;BEGINSELECTDATEFIELDINTOv_DateFieldFROMT_TABLENAMEWHEREROWNUM=1;END;原则:代码中声明与表的字段相对应的变量时,对类型的定义需要使用%TYPE方式。说明:这样表结构的变动不会影响存储过程,避免表结构变更后因变量长度或类型不一致而导致现有程序报错的问题。1.2返回值原则:函数的返回值定义应遵从下列规范:成功出口返回0,失败出口返回大于0整数。过程中定义的用于

4、返回错误码的OUTPUT参数,其定义应遵从下列规范:成功出口返回0,失败出口返回非0整数。1.3符号*原则:脚本中不允许出现“*”的用法,必须用实际的字段名代替,INSERT语句必须指定要插入的字段名。示例:1、游标定义错误用法:TW_PROC_DS_303第43页共43页EI产品线协同办公组数据库高效编程指南CURSORc_CursorNameISSELECT*FROMTABLENAME...正确用法:CURSORc_CursorNameISSELECTFIELD1,FIELD2,...FROMTABL

5、ENAME...说明:ORACLE在解析的过程中,会将'*'依次转换成所有的列名,这个工作是通过查询数据字典完成的,需要消耗更多的时间,因此查询时,请在SELECT后把需要查询出的字段列举出来,不要用*代替2、INSERT语句错误用法:INSERTINTOTABLENAMEVALUES...正确用法:INSERTINTOTABLENAME(FIELD1,FIELD2,...)VALUES...1.1包的使用建议:ORACLE的包类似C++中的Class,有包头和包体两部分组成;包能够把相关的功能封装性在一

6、个包中,包里面里可以有函数和过程。PACKAGE与PROCEDURE和FUNCTION的优点是封装性比较好;在开发过程中,可以把功能点紧密相关的PROCEDURE、FUNCTION封装在一个包里面。在对包体进行编译时,调用该包的存储过程不会失效。1.2绑定变量原则:使用绑定变量的SQL语句,能使用绑定变量方式的业务逻辑下不允许使用绑定常量实现。绑定变量目的:实现SQL共享,减少硬解析,减小CPU耗时说明:在存储过程拼SQL语句作为动态SQL执行时,尤其需要注意。示例:错误用法:v_SQL:='DELETE

7、FROMTABLENAMEWHEREFIELD1>SYSDATEANDFIELD2=102';EXECUTEIMMEDIATEv_SQL;TW_PROC_DS_303第43页共43页EI产品线协同办公组数据库高效编程指南正确用法:v_ID:=102;v_SQL:='DELETEFROMTABLENAMEWHEREFIELD1>:1ANDFIELD2=:2';EXECUTEIMMEDIATEv_SQLUSINGSYSDATE,v_ID;原则:为提升性能,减少循环的开销,可以使用批量绑定。说明:下面示例中的U

8、PDATE语句可以一次将多条记录进行更新,而避免了通过使用循环同一条SQL执行多次。示例:CREATEORREPLACEPROCEDUREP_CSP_TEST/*Description:根据输入的多个工单流水号,更新对应的SERVICECLASSID值Author:姓名工号Date:YYYY-MM-DDVersion:版本Caller:调用者Callee:被调用者Comments:注释信息History:1.Date:修改日期

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。