游标数据类型的类型
有两种主要类型的游标数据类型:弱类型游标数据类型和强类型游标数据类型。强类型或弱类型的属性是在创建数据类型时定义的。此属性保留在已创建的每种类型的变量中。
下面提供了强类型游标数据类型和弱类型游标数据类型的特征:
- 强类型游标数据类型
- 强类型游标数据类型是使用行数据结构指定的结果集定义创建的数据类型。这些数据类型称为强类型,原因是将结果集值指定给这些数据类型时,可检查结果集的数据类型。可通过提供行类型定义来定义游标数据类型结果集定义。只有与定义相匹配的结果集才能指定给强类型游标数据类型并存储在其中。强类型检查是在指定时执行的,如果存在任何数据类型不匹配,那么会发生错误。
强类型游标数据类型的结果集定义可通过行数据类型定义或 SQL 语句定义提供。
以下是游标数据类型定义的示例,该示例定义为返回行格式与 rowType 数据类型相同的结果集:
只有包含的数据列的数据类型定义与 rowType 行定义相同的结果集可成功指定给声明为 cursorType 游标数据类型的变量。CREATE TYPE cursorType AS rowType CURSOR@以下是游标数据类型定义的示例,该示例定义为返回行格式与定义表 T1 的格式相同的结果集:CREATE TABLE T1 (C1 INT) CREATE TYPE cursorType AS ANCHOR ROW OF t1 CURSOR;只有包含的数据列的数据类型定义与表 t1 的列定义相同的结果集可成功指定给声明为 cursorType 游标数据类型的变量。
与强类型游标相关联的行定义可作为锚定位数据类型的定义引用。以下示例说明这一点:
定义了行数据类型 r1,并且定义了与 r1 的行定义相关联的游标类型 c1。后续 SQL 语句可能出现在 SQL 过程中的变量声明的示例。第二个变量声明用于变量 r1,它被定义为锚定位数据类型:它被定位至用于定义游标 cv1 的行类型。CREATE TYPE r1 AS ROW (C1 INT); CREATE TYPE c1 AS RTEST CURSOR; DECLARE c1 CTEST; DECLARE r1 ANCHOR ROW OF CV1;
- 弱类型游标数据类型
- 弱类型游标数据类型与任何行数据类型定义无关。将值指定给弱类型游标变量时未执行任何类型检查。
游标变量的所有其他特征都是每种类型的游标变量的公共特征。