描述符类型

描述符用于描述以下内容之一:

  • 由零个或多个参数组成的一组参数。 参数描述符可用于描述:

    • 应用程序参数缓冲区,其中包含由应用程序设置的输入动态自变量,或者执行 SQL 的 CALL 语句后的输出动态自变量。

    • 实现参数缓冲区。 对于输入动态自变量,在应用程序可能指定的任何数据转换之后,此缓冲区包含与应用程序参数缓冲区相同的自变量。 对于输出动态自变量,此缓冲区包含应用程序可能指定的任何数据转换之前返回的自变量。

    对于输入动态自变量,应用程序必须在执行包含动态参数标记的任何 SQL 语句之前对应用程序参数描述符进行操作。 对于输入和输出动态自变量,应用程序可以指定与实现参数描述符中不同的数据类型来实现数据转换。

  • 单行数据库数据。 行描述符可用于描述:

    • 实现行缓冲区,其中包含数据库中的行。 (从概念上讲,这些缓冲区包含写入数据库或从数据库读取的数据。但是,未指定数据库数据的存储形式。数据库可以对实现缓冲区中其形式的数据执行其他转换。)

    • 应用程序行缓冲区,其中包含在应用程序可能指定的任何数据转换之后呈现给应用程序的数据行。

    在数据库中的列数据必须出现在应用程序变量中的任何情况下,应用程序都会对应用程序行描述符进行操作。 如果要实现列数据的数据转换,应用程序可以指定与实现行描述符中不同的数据类型。

下表汇总了这些描述符类型。

缓冲区类型 “行” 动态参数
应用程序缓冲区 应用程序行描述符 (ARD) 应用程序参数描述符 (APD)
实现缓冲区 实现行描述符 (IRD) 实现参数描述符 (IPD)

对于参数或行缓冲区,如果应用程序在实现和应用程序描述符的对应记录中指定了不同的数据类型,则驱动程序在使用描述符时执行数据转换。 例如,可以将数值和日期/时间值转换为字符串格式。 (有关有效转换,请参阅附录 D:数据类型。)

描述符可以执行不同的角色。 不同的语句可以共享应用程序显式分配的任何描述符。 一个语句中的行描述符可用作另一个语句中的参数描述符。

给定的描述符是应用程序描述符还是实现描述符总是已知的,即使尚未在数据库操作中使用该描述符。 对于实现隐式分配的描述符,实现将记录相对于语句句柄的预定义行。 应用程序通过调用 SQLAllocHandle 分配的任何描述符都是应用程序描述符。