WEB开发网
开发学院数据库DB2 DB2 9.5 SQL Procedure Developer 认证考试 735 准... 阅读

DB2 9.5 SQL Procedure Developer 认证考试 735 准备,第2部分

 2010-02-16 14:59:32 来源:WEB开发网   
核心提示:嵌套的存储过程调用嵌套过程DB2支持使用CALL语句在一个过程中调用另一个过程(即嵌套存储过程),下面的图说明了 CALL语句的语法:清单 6. CALL语句的语法>>-CALL--procedure-name--+--+-->< |.-,--.| |V|| '-(+-expressio

嵌套的存储过程

调用嵌套过程

DB2支持使用CALL语句在一个过程中调用另一个过程(即嵌套存储过程)。

下面的图说明了 CALL语句的语法:

清单 6. CALL语句的语法

>>-CALL--procedure-name--+--------------------------+----------><
             |  .-,--------------.  |
             |  V        |  |
             '-(----+-expression-+-+--)-'
                '-NULL-------'

注意,DB2是强类型的,CALL语句中的参数类型需要与调用存储过程的CREATE PROCEDURE语句中的参数兼容。CALL语句中的第n个参数对应于定义过程的CREATE PROCEDURE语句中定义的第n个参数。

清单 7 演示了这种关系:

清单 7. CALL语句与 CREATE PROCEDURE语句的相互关系

CREATE PROCEDURE NESTA (p1 int, p2 char(10), OUT p3 INT)
BEGIN
SQL Statements
END

现在,从另一个过程中调用这个过程:

清单 8. 调用过程

DECLARE v_v1 varchar(10);
DECLARE v_res INT default 0;
--- SQL statements and variable assignments
CALL nesta(10, v_v1, v_res);

归纳起来,将参数传递给存储过程有以下规则:

变量和参数是强类型的(它们必须匹配)

本地变量按所在的位置匹配存储过程

所有参数必须有一个值

重载的过程由参数的数量决定

获取返回码

在嵌套的存储过程中,RETURN语句用于通过将控制流返回给存储过程的调用者来立即终止一个SQL过程。RETURN语句还可以将一个INTEGER 值传回给调用者存储过程。如果没有提供值,默认值为0。

DB2支持通过 GET DIAGNOSTIC语句获取关于之前执行的CALL语句的信息,如下面的清单所示。

GET DIAGNOSTICS ret_code = DB2_RETURN_STATUS;

下面的例子演示如何使用RETURN 和GET DIAGNOSTICS语句。

例如,假设有2个不同的存储过程:

清单 9. 不同的存储过程

CREATE PROCEDURE TEST1(out v1 int)
begiN
 set v1 = 10;
 return;
end
CREATE PROCEDURE TEST2(out v1 int)
begiN
 set v1 = 5;
 return 2;
end

现在,调用这些存储过程,并检查各自的DB2_RETURN_STATUS:

清单 10. 调用存储过程并检查 DB2_RETURN_STATUS

CREATE PROCEDURE NEST_DIAGN (out ret_code1 int, out ret_code2 int )
P1: BEGIN
  DECLARE val1 INT default 0;
  call test2(val1);
  GET DIAGNOSTICS ret_code1 = DB2_RETURN_STATUS;
  call test1(val1);
  GET DIAGNOSTICS ret_code2 = DB2_RETURN_STATUS;
END P1

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:DB SQL Procedure

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接