Oracle 高效SQL编程指南V10

Oracle 高效SQL编程指南V10

ID:41037315

大小:180.50 KB

页数:38页

时间:2019-08-14

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

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

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

2、指南第1章常用语法1.1变量声明原则:代码中声明与表的字段相对应的变量时,应保证变量名和字段名相同。说明:这样要求的目的是增强可读性。示例:DECLAREv_DateFieldT_TABLENAME.DATEFIELD%TYPE;BEGINSELECTDATEFIELDINTOv_DateFieldFROMT_TABLENAMEWHEREROWNUM=1;END;原则:代码中声明与表的字段相对应的变量时,对类型的定义需要使用%TYPE方式。()说明:这样表结构的变动不会影响存储过程,避免表结构变更后因变量长度或类型不一致而

3、导致现有程序报错的问题。1.2返回值原则:函数的返回值定义应遵从下列规范:成功出口返回0,失败出口返回大于0整数。过程中定义的用于返回错误码的OUTPUT参数,其定义应遵从下列规范:成功出口返回0,失败出口返回非0整数。1.3符号*原则:脚本中不允许出现“*”的用法,必须用实际的字段名代替,INSERT语句必须指定要插入的字段名。示例:1、游标定义错误用法:TW_PROC_DS_303第38页共38页EI产品线数据库高效编程指南CURSORc_CursorNameISSELECT*FROMTABLENAME...正确用法:

4、CURSORc_CursorNameISSELECTFIELD1,FIELD2,...FROMTABLENAME...2、INSERT语句错误用法:INSERTINTOTABLENAMEVALUES...正确用法:INSERTINTOTABLENAME(FIELD1,FIELD2,...)VALUES...1.1包的使用建议:ORACLE的包类似C++中的Class,有包头和包体两部分组成;包能够把相关的功能封装性在一个包中,包里面里可以有函数和过程。PACKAGE与PROCEDURE和FUNCTION的优点是封装性比较好

5、;在开发过程中,可以把功能点紧密相关的PROCEDURE、FUNCTION封装在一个包里面。在对包体进行编译时,调用该包的存储过程不会失效。1.2绑定变量原则:使用绑定变量的SQL语句,能使用绑定变量方式的业务逻辑下不允许使用绑定常量实现。说明:在存储过程拼SQL语句作为动态SQL执行时,尤其需要注意。示例:错误用法:v_SQL:='DELETEFROMTABLENAMEWHEREFIELD1>SYSDATEANDFIELD2=102';EXECUTEIMMEDIATEv_SQL;正确用法:v_ID:=102;v_SQL:

6、='DELETEFROMTABLENAMEWHEREFIELD1>:1ANDFIELD2=:2';EXECUTEIMMEDIATEv_SQLUSINGSYSDATE,v_ID;TW_PROC_DS_303第38页共38页EI产品线数据库高效编程指南原则:为提升性能,减少循环的开销,可以使用批量绑定。说明:下面示例中的UPDATE语句可以一次将多条记录进行更新,而避免了通过使用循环同一条SQL执行多次。示例:CREATEORREPLACEPROCEDUREP_CSP_TEST/*Description:根据输入的多个工单流水

7、号,更新对应的SERVICECLASSID值Author:姓名工号Date:YYYY-MM-DDVersion:版本Caller:调用者Callee:被调用者Comments:注释信息History:1.Date:修改日期,格式为YYYY-MM-DDAuthor:修改人姓名与工号Modification:修改说明2.......*/(i_SerialNosVARCHAR2,--一次输入多个工单流水号以'~'分隔'i_ServiceClassIDVARCHAR2,o_RetOUTVARCHAR2--成功返回0,失败返回1)A

8、STYPEtyp_StrArrayISTABLEOFVARCHAR2(500)INDEXBYBINARY_INTEGER;v_ArrSerialtyp_StrArray;BEGINFORiIN1..9999LOOP--把输入参数的值取出存放在数组v_ArrSerial中EXITWHENGetParamS

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

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

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