DESCRIBE CURSOR 语句

DESCRIBE CURSOR 语句用于获取与游标关联的结果集的信息。 诸如列信息之类的资料被放入描述符中。 使用描述光标获取存储过程的结果集光标。 必须使用ALLOCATE CURSOR语句定义光标。

调用 DESCRIBE CURSOR

此语句只能嵌入在应用程序中。 这是一个无法动态准备的可执行语句。

授权 DESCRIBE CURSOR

不需要执行任何操作。

语法 DESCRIBE CURSOR

阅读语法图跳过可视化语法图DESCRIBE CURSOR 光标名称宿主变量 INTO描述符名称

描述 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