DB2 9.5 SQL Procedure Developer认证考试 735 准备,第1部分
2010-02-16 14:59:34 来源:WEB开发网Select-statement 是一条有效的SQL SELECT语句。可以指定 FOR UPDATE子句,以便将游标用于定位更新或删除。
WITHOUT HOLD/WITH HOLD 选项定义 COMMIT 操作之后的游标状态(open/close)。默认情况下为 WITHOUT HOLD。如果使用了WITH HOLD 选项定义一个游标,那么在COMMIT 操作之后,该游标保持 OPEN 状态。在ROLLBACK 操作之后,所有游标都将被关闭。
下面是一个显式声明游标的例子,它可以用于过程中后面的迭代处理:
清单 8. 游标声明的例子
DECLARE mycur1 CURSOR
FOR SELECT e.empno, e.lastname, e.job
FROM employee e, department d
WHERE e.workdept = d.deptnO
AND deptname =’PLANNING’;
虽然SQL语句不能包含参数占位符,但是它可以引用在游标之前声明的本地变量。例如:
清单 9. 使用本地变量的游标声明
DECLARE v_dept CHAR(3) DEAFULT ‘ ‘;
DECLARE myres_set CURSOR
FOR SELECT empno, lastname, job, salary, comm.
FROM employee
WHERE workdept = v_dept;
游标和结果集
在SQL过程中,除了迭代结果集中的行以外,游标还可以做更多的事情。游标还可用于将结果集返回给调用程序或其他过程。
WITHOUT RETURN/WITH return 选项指定游标的结果表是否用于作为从一个过程中返回的结果集。
WITH RETURN TO CALLER 选项指定将来自游标的结果集返回给调用者,后者可以是另一个过程或一个客户机应用程序。这是默认选项。
WITH RETURN TO CLIENT 选项指定将来自游标的结果集返回给客户机应用程序,绕过任何中间的嵌套过程。
若要从一个过程中返回结果集,需要:
创建一个过程,创建时指定 DYNAMIC RESULT SETS子句。
声明游标,声明时指定 WITH RETURN子句。
打开该游标,并使之保持 open 状态。
如果关闭该游标,则结果集将不能返回给调用者应用程序。
清单 10 演示了一个游标的声明,该游标从一个过程中返回一个结果集:
清单 10. 返回一个结果集的游标的声明
CREATE PROCEDURE emp_from_dept()
DYNAMIC RESULT SETS 1
P1: BEGIN
DECLARE c_emp_dept CURSOR WITH RETURN
FOR SELECT empno, lastname, job, salary, comm.
FROM employee
WHERE workdept = ‘E21’;
OPEN c_emp_dept;
END P1
游标处理
为了在一个过程中处理一个游标的结果,需要做以下事情:
在存储过程块的开头部分 DECLARE 游标。
打开该游标。
将游标的结果取出到之前已声明的本地变量中(隐式游标处理除外,在下面的FOR语句中将对此加以解释)。
关闭该游标。(注意:如果现在不关闭游标,当过程终止时将隐式地关闭游标)。
条件语句
SQL PL 中支持两种类型的条件语句 — IF语句和 CASE语句。
IF语句
通过 IF语句可以根据一个条件的状态来实现逻辑的分支。IF语句支持使用可选的ELSEIF子句和默认的ELSE子句。END IF子句是必需的,它用于表明 IF语句的结束。
清单 11 展示了一个示例 IF语句。
清单 11. IF语句示例
IF years_of_serv > 30 THEN
SET gl_sal_increase = 15000;
ELSEIF years_of_serv > 20 THEN
SET gl_sal_increase = 12000;
ELSE
SET gl_sal_increase = 10000;
END IF;
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接