欢迎来到天天文库
浏览记录
ID:41037315
大小:180.50 KB
页数:38页
时间:2019-08-14
《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
此文档下载收益归作者所有