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

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

 2010-10-01 16:37:04 来源:WEB开发网   
核心提示: SQL statements END WHILE; REPEAT 循环 -- 退出前检查条件 REPEAT SQL statements; UNTIL condition END REPEAT; FOR 循环 -- 结果集上的隐式循环 FOR loop_name AS SELECT &helli

SQL statements

END WHILE;

REPEAT 循环 -- 退出前检查条件

REPEAT

SQL statements;

UNTIL condition

END REPEAT;

FOR 循环 -- 结果集上的隐式循环

FOR loop_name AS

SELECT … FROM

DO

SQL statements;

END FOR;

请注意,FOR 语句不同于其他的迭代语句,因为它用于迭代一个定义好的结果集中的行。

为了演示这些循环技巧的使用,我们来编写一个过程,该过程从一个 EMPLOYEE 表中获取每个雇员的姓氏、工作年限和年龄,并将其插入到新表 REPORT_INFO_DEPT 中,这些信息分别被声明为 lname varchar(15)、hiredate date 和 birthdate date。

请注意,使用一个简单的 SQL 语句也可以做同样的事情,但是在这个例子中我们使用 3 种不同的循环语句。

清单 13. 简单的循环例子

CREATE PROCEDURE LEAVE_LOOP (DEPTIN char(3), OUT p_counter INTEGER)
Ll: BEGIN
  DECLARE v_at_end , v_counter INTEGER DEFAULT 0;
  DECLARE v_lastname VARCHAR(15);
  DECLARE v_birthd, v_hired DATE;
  DECLARE c1 CURSOR
   FOR SELECT lastname, hiredate, birthdate FROM employee
     WHERE WORKDEPT = deptin;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_at_end = 1;
  OPEN c1;
  FETCH_LOOP: LOOP
  FETCH c1 INTO v_lastname, v_hired, v_birthd;
   IF v_at_end <> 0 THEN  -- loop until last row of the cursor
    LEAVE FETCH_LOOP;
   END IF;
   SET v_counter = v_counter + 1;
   INSERT INTO REPORT_INFO_DEPT
     values(v_lastname, v_hired, v_birthd);    
  END LOOP FETCH_LOOP;
  SET p_counter = v_counter;
 END Ll

上一页  4 5 6 7 8 9 10  下一页

Tags:DB SQL Procedure

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