欢迎来到天天文库
浏览记录
ID:48025175
大小:220.65 KB
页数:16页
时间:2020-01-26
《db2存储过程开发实践.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、本文以DB2开发人员的角度介绍了在DB2存储过程开发中需要注意的事项和技巧。新手如果能够按照本文介绍的最佳实践来开发存储过程,可以避免一些常见的错误,从而编写出高效的程序。本文从初始化参数、游标、异常处理、临时表的使用以及如何寻找并rebind非法存储过程等常见问题进行了着重讨论,并且给出了示例代码。DB2提供的强大功能可以让开发人员创建出非常高效稳定的存储过程。但对于初学者来说,开发出这样的程序并不容易。本文主要讨论开发高效稳定的DB2存储过程的一些常用技巧和方法。读者定位为具有一定开发经验的DB2开发经验的开发人员。读者可以从
2、本文学习到如何编写稳定、高效的存储过程。并可以直接使用文章中提供的DB2代码,从而节省他们的开发和调试时间,提高效率。本文以DB2开发人员的角度介绍了在DB2存储过程开发中需要注意的事项和技巧。新手如果能够按照本文介绍的最佳实践来开发存储过程,可以避免一些常见的错误,从而编写出高效的程序。本文从初始化参数、游标、异常处理、临时表的使用以及如何寻找并rebind非法存储过程等常见问题进行了着重讨论,并且给出了示例代码。在存储过程中,开发人员能够声明和设置SQL变量、实现流程控制、处理异常、能够对数据进行插入、更新或者删除。同时,客户
3、应用(这里指调用存储过程的应用程序,它可以是JDBC的调用,也可以是ODBC和CLI等)和存储过程之间可以传递参数,并且从存储过程中返回结果集。其中,使用SQL编写的DB2存储过程是在开发中常见的一种存储过程。本文主要讨论此类存储过程。最佳实践1:在创建存储过程语句中提供必要的参数创建存储过程语句(CREATEPROCEDURE)可以包含很多参数,虽然从语法角度讲它们不是必须的,但是在创建存储过程时提供它们可以提高执行效率。下面是一些常用的参数容许SQL(allowed-SQL)容许SQL(allowed-SQL)子句的值指定了存
4、储过程是否会使用SQL语句,如果使用,其类型如何。它的可能值如下所示:•NOSQL:表示存储过程不能够执行任何SQL语句。•CONTAINSSQL:表示存储过程可以执行SQL语句,但不会读取SQL数据,也不会修改SQL数据。•READSSQLDATA:表示在存储过程中包含不会修改SQL数据的SQL语句。也就是说该储存过程只从数据库中读取数据。•MODIFIESSQLDATA:表示存储过程可以执行任何SQL语句。即可以对数据库中的数据进行增加、删除和修改。如果没有明确声明allowed-SQL,其默认值是MODIFIESSQLDAT
5、A。不同类型的存储过程执行的效率是不同的,其中NOSQL效率最好,MODIFIESSQLDATA最差。如果存储过程只是读取数据,但是因为没有声明allowed-SQL使其被当作对数据进行修改的存储过程来执行,这显然会降低程序的执行效率。因此创建存储过程时,应当明确声明其allowed-SQL。返回结果集个数(DYNAMICRESULTSETSn)存储过程能够返回0个或者多个结果集。为了从存储过程中返回结果集,需要执行如下步骤:•在CREATEPROCEDURE语句的DYNAMICRESULTSETS子句中声明存储过程将要返回的结果
6、集的数量(number-of-result-sets)。如果这里声明的返回结果集的数量小于存储过程中实际返回的结果集数量,在执行该存储过程的时候,DB2会返回一个警告。•使用WITHRETURN子句,在存储过程体中声明游标。•为结果集打开游标。当存储过程返回的时候,保持游标打开。在创建存储过程时指定返回结果集的个数可以帮助程序员验证存储过程是否返回了所期待数量的结果集,提高了程序的完整性。最佳实践2:对输入参数进行必要的的检查和预处理无论使用哪种编程语言,对输入参数的判断都是必须的。正确的参数验证是保证程序良好运行的前提。同样的,
7、在DB2中对输入参数的验证和处理也是很重要的。正确的验证和预处理操作包括:•如果输入参数错误,存储过程应返回一个明确的值告诉客户应用,然后客户应用可以根据返回的值进行处理,或者向存储过程提交新的参数,或者去调用其他的程序。•根据业务逻辑,对输入参数作一定的预处理,如大小写的转换,NULL与空字符串或0的转换等。在DB2储存过程开发中,如需要遇到对空(NULL)进行初始化,我们可以使用COALESCE函数。COALESCE函数返回第一个非空的参数,语法如下:清单1:COALESCE函数.---------------.(1)V
8、>>
9、-COALESCE-------(--expression----,--expression-+--)---------->
此文档下载收益归作者所有