资源描述:
《《数据库开发基础》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、DB2开发基础知识储存过程开发内容提要数据类型储存过程及函数的结构参数定义变量定义赋值语句条件控制语句循环语句常用操作符游标使用动态游标使用异常处理SESSION临时表使用常用函数数据一致性和完整性事务隔离级别数据类型定长型字符串(CHAR)变长型字符串(VARCHAR)整数类型(SMALLINT、INTEGER、BIGINT)带小数点的数字类型(DECIMAL、REAL、DOUBLE)时间类型(DATE、TIME、TIMESTAMP)对象类型(BLOB、CLOB、DBCLOB)使用储存过程优点减少客户
2、机与服务器之间的网络使用率。客户机应用程序将控制权传送到数据库服务器上的存储过程。存储过程在数据库服务器上执行中间处理,而不需要在网络中传送不需要的数据。提高安全性。通过使使用静态SQL的存储过程包含数据库特权,数据库管理员(DBA)可以提高安全性。调用存储过程的客户机应用程序的用户不需要数据库特权。提高可靠性。在数据库应用程序环境中,许多任务是重复的。通过重用一个公共过程,存储过程就可以高效地解决这些重复情况。存储过程结构存储过程结构如下:CREATEPROCEDUREsqlsamp(INdptvar
3、char(4))SPECIFICsqlsampRESULTSETS1LANGUAGESQL--------------------------------------------------------------------------SQLStoredProceduresqlsamp------------------------------------------------------------------------P1:BEGIN--DeclarecursorDECLAREcursor1C
4、URSORWITHRETURNFORSELECTDEPARTMENT.DEPTNO,DEPARTMENT.DEPTNAME,EMPLOYEE.FIRSTNME,EMPLOYEE.MIDINIT,EMPLOYEE.LASTNAMEFROMDEPARTMENT,EMPLOYEEWHERE((EMPLOYEE.EMPNO=DEPARTMENT.MGRNO)AND((DEPARTMENT.DEPTNO=dpt)));--CursorleftopenforclientapplicationOPENcursor1;
5、ENDP1参数定义DB2储存过程的参数分为两部分:输入和输出参数。参数表示方式:输入参数用IN开头输出参数用OUT开头既是输入又是输出参数用INOUT开头举例说明:createproceduresp_sample(invar0varchar(10),outvar1varchar(20),inoutvar2varchar(20))变量定义存储过程中可以使用关键字DECLARE定义变量,然后在后续程序过程中使用变量来处理逻辑。定义变量时可以指定一个初始值。举例说明:CREATEPROCEDUREP2(INO
6、UTaVARCHAR(8),OUTbINTEGER)LANGUAGESQLBEGINDECLAREvar1INTEGERDEFAULT0;DECLAREvar2VARCHAR(5)DEFAULTa
7、
8、'bc';--otherSQLstatements–END赋值语句存储过程使用关键字SET给变量赋值。举例说明:CREATEPROCEDUREP2(INOUTaVARCHAR(8),OUTbINTEGER)LANGUAGESQLBEGINDECLAREvar1INTEGERDEFAULT0;DECLAREv
9、ar2VARCHAR(5)DEFAULTa
10、
11、'bc';SETvar1=0;SETvar1=var1+1;SETvar2=var2
12、
13、'def';SETa=var1;SETb=var2;END条件控制语句1条件控制语句包括以下几种:IF…ENDIF举例说明:IFrating=1THENUPDATEemployeeSETsalary=salary*1.10,bonus=1000WHEREempno=employee_number;ELSEIFrating=2THENUPDATEemployeeSETsal
14、ary=salary*1.05,bonus=500WHEREempno=employee_number;ELSEUPDATEemployeeSETsalary=salary*1.03,bonus=0WHEREempno=employee_number;ENDIF;条件控制语句2CASE…WHEN举例说明:CASEWHENv_workdept='A00'THENUPDATEdepartmentSETdeptname='DATAACCESS1'