使用 InfoSphere Data Architect 对 DB2 存储过程进行开发、调试与部署
2010-05-13 00:00:00 来源:WEB开发网此时这个新创建的存储过程已经被部署到数据库中,通过“数据源资源管理器”可以查看存储过程在数据库中的保存位置,如下图:
图 15. 部署在数据库上的存储过程
在“SQL 结果”视图中可以查看存储过程在数据库中创建的执行结果,如下图:
图 16. 部署存储过程的执行结果
查看原图(大图)
利用向导创建的存储过程包含一个 SQL 查询语句和错误处理逻辑,根据本文示例的需求,在编辑器中对存储过程进行修改,添加业务逻辑实现雇员姓名重命名功能,更新后的存储过程代码如下:
清单 4. 更新后的存储过程代码
CREATE PROCEDURE TESTEMPLOYEESP ( IN IN_EMPLOYEE_NAME VARCHAR(30),
OUT SQLSTATE_OUT CHAR(5),
OUT SQLCODE_OUT INTEGER )
DYNAMIC RESULT SETS 1
---------------------------------------------------------------------
-- SQL Stored Procedure
-- IN_EMPLOYEE_NAME
-- SQLSTATE_OUT
-- SQLCODE_OUT
---------------------------------------------------------------------
P1: BEGIN
-- Declare variables
DECLARE SQLSTATE CHAR(5) DEFAULT '00000';
DECLARE SQLCODE INT DEFAULT 0;
DECLARE v_employee_id BIGINT;
DECLARE v_employee_name VARCHAR(30);
DECLARE v_count INT DEFAULT 0;
DECLARE at_end INT DEFAULT 0;
DECLARE not_found CONDITION FOR SQLSTATE '02000';
-- Declare cursor
DECLARE cursor1 CURSOR WITH RETURN FOR
SELECT ID, NAME
FROM EMPLOYEE
WHERE NAME = IN_EMPLOYEE_NAME;
DECLARE CONTINUE HANDLER FOR not_found
SET at_end = 1;
-- Declare handler
DECLARE EXIT HANDLER FOR SQLEXCEPTION
SELECT SQLSTATE, SQLCODE INTO SQLSTATE_OUT, SQLCODE_OUT
FROM SYSIBM.SYSDUMMY1;
-- Cursor left open for client application
OPEN cursor1;
FETCH cursor1 INTO v_employee_id, v_employee_name;
WHILE at_end=0 DO
SET v_count = v_count + 1;
UPDATE EMPLOYEE SET NAME=(TRIM(v_employee_name) || '_' ||
TRIM(CHAR(v_count))) WHERE ID=v_employee_id;
SET at_end=0;
FETCH cursor1 INTO v_employee_id, v_employee_name;
END WHILE;
CLOSE cursor1;
COMMIT;
SET SQLSTATE_OUT = SQLSTATE;
SET SQLCODE_OUT = SQLCODE;
END P1
Tags:使用 InfoSphere Data
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接