分配存储区

适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics 平台系统(PDW)

应用程序可以在执行 SQL 语句之前或之后为结果分配存储区。 如果应用程序首先准备或执行 SQL 语句,则它可以在为结果分配存储区之前询问有关结果集的情况。 例如,如果结果集是未知的,则应用程序在为它们分配存储区之前必须先检索列数。

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

  • 数据将要转换成的数据类型。

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

    应用程序必须分配该缓冲区,并且必须足够大以容纳采用转换后目标格式的数据。

  • 输出缓冲区的长度。

    如果返回数据在 C 中有固定宽度(比如整数、实数或日期结构),则忽略该值。

  • 用于返回可用数据字节数的存储缓冲区的地址。

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

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

    通过调用属性设置为 SQL_ATTR_ROW_BIND_TYPE 的 SQLSetStmtAttr将 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)