分配存储区

应用程序可以在执行 SQL 语句之前或之后为结果分配存储。 如果应用程序首先准备或执行 SQL 语句,则可以在为结果分配存储之前查询结果集。 例如,如果结果集未知,则应用程序必须检索列数,然后才能为其分配存储。

若要关联数据列的存储,应用程序会调用 SQLBindCol并传递它:

  • 要向其转换数据的数据类型。

  • 数据的输出缓冲区的地址。

    应用程序必须分配此缓冲区,并且它必须足够大,以保存其转换到的形式中的数据。

  • 输出缓冲区的长度。

    如果返回的数据的宽度为 C,例如整数、实数或日期结构,则忽略此值。

  • 要在其中返回可用数据的字节数的存储缓冲区的地址。

应用程序还可以将结果集列绑定到程序变量数组,以支持提取块中的结果集行。 有两种不同类型的数组绑定:

  • 当每个列绑定到其自己的变量数组时,将完成列式绑定。

    通过调用属性设置为 SQL_ATTR_ROW_BIND_TYPESQLSetStmtAttr,将 ValuePtr 设置为SQL_BIND_BY_COLUMN来指定列式绑定。 所有数组必须具有相同数量的元素。

  • 当 SQL 语句中的所有参数都作为一个单元绑定到包含参数各个变量的结构数组时,将完成行绑定。

    通过将属性设置为SQL_ATTR_ROW_BIND_TYPE的 SQLSetStmtAttr 调用 SQLSetStmtAttr,并将 ValuePtr 设置为包含将接收结果集列的变量的结构的大小来指定行绑定。

应用程序还将SQL_ATTR_ROW_ARRAY_SIZE设置为列或行数组中的元素数,并设置SQL_ATTR_ROW_STATUS_PTR和SQL_ATTR_ROWS_FETCHED_PTR。

另请参阅

处理结果 (ODBC)