
另一篇有关高级脚本编制的文章
热 荐
【字体:小 大】
另一篇有关高级脚本编制的文章
作者:- 文章来源:- 点击数:792 更新时间:2006-4-22 
Paul Yip
IBM 多伦多实验室
2003 年 7 月 为了回应读者的问题,作家 Paul Yip 对于脚本编制提出了另外几个技巧和技术,还概述了 DB2 V8 中的新增功能。
重要:在阅读本文之前请先看一下 免责声明。
简介
本文是以前的文章 DB2 v7.2 中的高级 SQL 过程脚本编制的续篇。本文向您提供了新的理解、技巧和诀窍。因为本文是为回应那些阅读了第一篇文章的读者反馈而编写的,而且它作为附加问题的回答,所以结构不是很严谨。事实上,根本没有结构可言 — 确实如此。但是,根据每一节的标题,您应该能快速找到需要的内容。
编写的所有示例都适用于 UNIX®。只要做少量更改(如果您愿意),那么它们也可适用于 Windows®。
对于 SQL 过程化语言(SQL PL)脚本编制,DB2® V8.1 新增了什么功能
DB2 Universal Database™ V8 中的两个主要增强功能是: 支持分区数据库 支持 FETCH FIRST n ROWS
支持分区数据库
我编写过有关用于触发器和脚本编制的 SQL PL 的其它文章,如果您已经阅读了这些文章,那么可能已经注意到这些文章顶部的说明:
这里所开发和测试的示例适用于 DB2 个人版(Personal Edition)、工作组版(Workgroup Edition)和企业版(Enterprise Edition)。如果您对这些示例有疑问,请与作者联系。
这是一种暗示:企业扩展版(Enterprise-Extended Edition,也称为 EEE)不支持将 SQL PL 用于动态复合语句。DB2 V8 开始取消了这一限制。另外,需要指出,在 V8 中,企业版和企业扩展版已经合并成企业服务器版(Enterprise Server Edition,ESE)。
支持 FETCH FIRST n ROWS
支持 FETCH FIRST n ROWS 允许您在产生多行时,对变量赋值限制结果集。清单 1 显示了这一限制的实际使用:
清单 1. 在子 select 中使用 FETCH FIRST n ROWS 的示例
BEGIN ATOMIC DECLARE v_name VARCHAR(30); SET v_name = (SELECT firstnme || ' ' || lastname FROM employee FETCH FIRST 1 ROWS ONLY); SIGNAL SQLSTATE '80000' SET MESSAGE_TEXT=v_name; END@
