- 5
- 0
- 约1.05万字
- 约 46页
- 2017-06-13 发布于湖北
- 举报
第 3 卷:UDT、UDF 和大对象 第 1 单元 编程结构、UDT 和 UDF 学习目标 在完成本单元的学习后,您将能够: 解释 UDT 和 UDF 的概念 描述如何执行 UDT 和 UDF 讨论如何用 Java 编写 UDF 程序 解释表功能 描述如何从 SQL 语句中引用 UDF 用户定义类型(UDT)的概念 UDT 是基于基本的 SQL 数据类型定义的 这独立于构建 UDF 的编程语言 需要超出基本的数据类型 UDT 帮助数据建立上下文 DB2 用户定义类型(UDT)有两种类型 清晰类型 结构类型 用户定义类型(UDT)的清晰类型 清晰类型是从一种原始数据类型派生出来的 清晰类型加强了数据的强类型 清晰类型支持比较操作 用户定义清晰类型是用 CREATE DISTINCT TYPE 语句创建的 当需要与基本数据类型相似的数据,并且在该数据中有约束时,会使用清晰类型数据 图 1. UDT:KM 与 MILES 假设有一个应用程序用来确定美国和加拿大的商店之间的最佳路线。为了实现这个功能,必须同时使用公制和英制度量的长度。可能不知道表中存储的数据是以千米还是以英里为单位的。可以使用一个 UDT 创建一个 KM 类型,使用另一个 UDT 创建一个 MILES 类型。通过明确地使用这些类型,可以清楚地知道表中存储的是哪种度量方式的数据。还可以编写一个函数,用来自动地将 KM 和 MILES 类型的数据相加。 创建 UDT 可以用 CREATE DISTINCT TYPE 语句创建 UDT。该语句的语法如下: -CREATE DISTINCT TYPE--distinct-type-name--AS----------------- --| source-data-type |--WITH COMPARISONS----------------------| 源数据类型可以是 DB2 所使用的任何标准数据类型 创建 UDT CREATE DISTINCT TYPE km AS INTEGER WITH COMPARISONS CREATE DISTINCT TYPE miles AS INTEGER WITH COMPARISONS 使用 UDT 通常,DB2 会自动地进行数据类型的转换,从而允许执行算术或比较操作。 但是对于 UDT 则不会如此。 Eg: empno = CHAR(6) {but the data is always numeric} SQL String: SELECT (empno + 1) AS new_emp_no FROM employee 转换 想要使用不同的 UDT 或数据类型进行比较或执行算术操作,可以使用 CAST 指令将它们转换成同一数据类型。以下是其语法: CAST--(--objectName--AS--target-data-type--)----| 以上示例: CAST (empno AS INTEGER) CREATE DISTINCT TYPE km AS INTEGER WITH COMPARISONS; CREATE DISTINCT TYPE miles AS INTEGER WITH COMPARISONS; CREATE TABLE cityInfo ( cityName CHAR(20), width_k KM NOT NULL, width_m MILES NOT NULL ); 下面的 SQL 语句会成功执行,因为 WHERE 子句中进行比较的数据类型正确地转换为相同的数据类型。这个 SQL 语句将整数 “10” 转换成 KM 类型以便进行比较。 SELECT cityName FROM cityInfo WHERE width_k km(10) ? SELECT cityName FROM cityInfo WHERE width_k width_m 下面的语句将成功执行,因为这两种数据类型都被转换成 INTEGER 类型。 SELECT cityName FROM cityInfo WHERE CAST(width_k AS INTEGER) CAST(width_m AS INTEGER) 第 3 单元 使用大对象 学习目标 在完成本单元的学习后,您将能够: 定义 LOB 识别不同的 LOB 类型 解释如何编写在 LOB 上进行数据操作的 Java 程序 大对象(LOB)是什么? 存储大量数据的对象 有不同的数据类型可以存储数据 BLOB 双字符大对象 CLOB 字符大对象 DBCLOB 双字节字符大对象
原创力文档

文档评论(0)