db2存储过程
创建存储过程语句(CREATEPROCEDURE)可以包含很多参数,虽然从语法角度讲它们不是必须的,但是在创建存储过程时提供它们可以提高执行效率。下面是一些常用的参数容许 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 SQLDATA。不同类型的存储过程执行的效率是不同的,其中 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 子句,在存储过程体中声明游标。
为结果集打开游标。当存储过程返回的时候,保持游标打开。
在创建存储过程时指定返回结果集的个数可以帮助程序员验证存储过程是否返回了所期待数量的结果集,提高了程序的完整性。
页:
[1]