文档详情

《db2存储过程开发实践》.pdf

发布:2016-01-03约1.35万字共16页下载文档
文本预览下载声明
本文以 DB2 开发人员的角度介绍了在 DB2 存储过程开发中需要注意的事项和技巧。新手如果能够按照本 文介绍的最佳实践来开发存储过程,可以避免一些常见的错误,从而编写出高效的程序。本文从初始化参 数、游标、异常处理、临时表的使用以及如何寻找并 rebind 非法存储过程等常见问题进行了着重讨论, 并且给出了示例代码。 DB2 提供的强大功能可以让开发人员创建出非常高效稳定的存储过程。但对于初学者来说,开发出这样的 程序并不容易。本文主要讨论开发高效稳定的 DB2 存储过程的一些常用技巧和方法。 读者定位为具有一定开发经验的 DB2 开发经验的开发人员。 读者可以从本文学习到如何编写稳定、高效的存储过程。并可以直接使用文章中提供的 DB2 代码,从而节 省他们的开发和调试时间,提高效率。 本文以 DB2 开发人员的角度介绍了在 DB2 存储过程开发中需要注意的事项和技巧。新手如果能够按照本 文介绍的最佳实践来开发存储过程,可以避免一些常见的错误,从而编写出高效的程序。本文从初始化参 数、游标、异常处理、临时表的使用以及如何寻找并 rebind 非法存储过程等常见问题进行了着重讨论, 并且给出了示例代码。 在存储过程中,开发人员能够声明和设置 SQL 变量、实现流程控制、处理异常、能够对数据进行插入、更 新或者删除。同时,客户应用(这里指调用存储过程的应用程序,它可以是 JDBC 的调用,也可以是 ODBC 和 CLI 等)和存储过程之间可以传递参数,并且从存储过程中返回结果集。其中,使用 SQL 编写的 DB2 存 储过程是在开发中常见的一种存储过程。本文主要讨论此类存储过程。 最佳实践 1 :在创建存储过程语句中提供必要的参数 创建存储过程语句(CREATE PROCEDURE)可以包含很多参数,虽然从语法角度讲它们不是必须的,但是在 创建存储过程时提供它们可以提高执行效率。下面是一些常用的参数 容许 SQL (allowed-SQL ) 容许 SQL (allowed-SQL)子句的值指定了存储过程是否会使用 SQL 语句,如果使用,其类型如何。它 的可能值如下所示: • NO SQL: 表示存储过程不能够执行任何 SQL 语句。 • CONTAINS SQL: 表示存储过程可以执行 SQL 语句,但不会读取 SQL 数据,也不会修改 SQL 数 据。 • READS SQL DATA: 表示在存储过程中包含不会修改 SQL 数据的 SQL 语句。也就是说该储存过程 只从数据库中读取数据。 • MODIFIES SQL DATA: 表示存储过程可以执行任何 SQL 语句。即可以对数据库中的数据进行增加、 删除和修改。 如果没有明确声明 allowed-SQL,其默认值是 MODIFIES SQL DATA。不同类型的存储过程执行的效率是不 同的,其中 NO SQL 效率最好,MODIFIES SQL DATA 最差。如果存储过程只是读取数据,但是因为没有声 明 allowed-SQL 使其被当作对数据进行修改的存储过程来执行,这显然会降低程序的执行效率。因此创建 存储过程时,应当明确声明其 allowed-SQL。 返回结果集个数(DYNAMIC RESULT SETS n) 存储过程能够返回 0 个或者多个结果集。为了从存储过程中返回结果集,需要执行如下步骤: • 在 CREATE PROCEDURE 语句的 DYNAMIC RESULT SETS 子句中声明存储过程将要返回的结果集的数 量(number-of-result-sets)。如果这里声明的返回结果集的数量小于存储过程中实际返回的结 果集数量,在执行该存储过程的时候,DB2 会返回一个警告。 • 使用 WITH RETURN 子句,在存储过程体中声明游标。 • 为结果集打开游标。当存储过程返回的时候,保持游标打开。 在创建存储过程时指定返回结果集的个数可以帮助程序员验证存储过程是否返回了所期待数量的结果集, 提高了程序的完整性。 最佳实践 2 :对输入参数进行必要的的检查和预处理 无论使用哪种编程语言,对输入参数的判断都是必须的。正确的参数验证是保证程序良好运行的前提。同 样的,在 DB2 中对输入参数的验证和处理也是很重要的。正确的验证和预处理操作包括: • 如果输入参数错误,存储过程应返回一个明确的值告诉客户应用,然后客户应用可以根据返回的 值进行处理,或者向存
显示全部
相似文档