DESCRIBE CURSOR 语句
DESCRIBE CURSOR 语句用于获取与游标关联的结果集的信息。 诸如列信息之类的资料被放入描述符中。 使用描述光标获取存储过程的结果集光标。 必须使用ALLOCATE CURSOR语句定义光标。
调用 DESCRIBE CURSOR
此语句只能嵌入在应用程序中。 这是一个无法动态准备的可执行语句。
授权 DESCRIBE CURSOR
不需要执行任何操作。
语法 DESCRIBE CURSOR
描述 DESCRIBE CURSOR
- 游标名 或 宿主变量
- 通过指定的光标名称或主机变量中的光标名称来识别光标。 该名称必须标识源程序中已分配的游标。
光标结果表的列不能是数组。
如果使用宿主变量 :
- 它必须是一个字符串变量,最大长度为18字节。
- 其后不能跟指示变量。
- 光标名称必须在主机变量中靠左对齐,且不能包含嵌入的空格。
- 如果游标名称的长度小于宿主变量的长度,则必须在右侧用空格补齐。
例外:
上述语法适用于除REXX之外的所有语言。 对于REXX,语法为DESCRIBE CURSOR :hostvar INTO :descriptor-name。
- INTO descriptor-name
- 标识 SQL 描述符区域 (SQLDA)。 SQLDA返回的信息描述了结果集中与指定游标关联的列。
分配和初始化SQLDA的考虑因素与可变列表SELECT语句的考虑因素类似。 更多信息,请参阅在程序中为可变列表的SELECT语句添加动态SQL。
对于REXX :SQLDA在使用前不会分配。
有关DESCRIBE CURSOR语句后SQLDA结果的描述,请参阅 DESCRIBE CURSOR的SQLDA内容。
备注 DESCRIBE CURSOR
- 使用游标获取结果集
当生成结果集的语句为以下任一语句时,DESCRIBE CURSOR获取的信息中包含列名:
- 动态
- 安装面板上 DSNTIP4 的描述为静态,当绑定包或存储过程时,静态和现场描述为静态。 如果字段的值为NO,则返回的信息仅包括列的数据类型和长度。
- 用于描述游标的 SQLDA 内容
在执行DESCRIBE CURSOR语句后,SQLDA的内容与DESCRIBE OUTPUT语句返回的内容类似(请参阅 DESCRIBE OUTPUT返回的SQLDA内容 ),但有以下例外:
- SQLDAID字段的首5个字节被设置为“SQLRS”。
- SQLDAID字段的第6至第8字节为保留字节。 如果游标在存储过程中被声明为“保持”,则 8th 字节的高位被置为1。
这些例外不适用于REXX SQLDA,因为它不包含SQLDAID字段。
- 使用宿主变量
- 如果 DESCRIBE CURSOR 语句包含宿主变量,则宿主变量的内容将采用在绑定包含该语句的程序包或计划时在 ENCODING 参数中指定的编码方案。
例子 DESCRIBE CURSOR
以下示例中的语句假定是在PL/I程序中。
- 示例 1
- 将光标 C1 所指向的结果集信息放入 :sqlda1 命名的描述符中。
EXEC SQL DESCRIBE CURSOR C1 INTO :sqlda1 - 示例 2
- 将 :hv1 命名的光标所关联的结果集信息放入 :sqlda2 命名的描述符中。
EXEC SQL DESCRIBE CURSOR :hv1 INTO :sqlda2
