分配存储区
应用程序可以在执行 SQL 语句之前或之后为结果分配存储区。 如果应用程序首先准备或执行 SQL 语句,则它可以在为结果分配存储区之前询问有关结果集的情况。 例如,如果结果集是未知的,则应用程序在为它们分配存储区之前必须先检索列数。
若要关联数据列的存储,应用程序调用 SQLBindCol并传递它:
数据将要转换成的数据类型。
数据的输出缓冲区的地址。
应用程序必须分配该缓冲区,并且必须足够大以容纳采用转换后目标格式的数据。
输出缓冲区的长度。
如果返回数据在 C 中有固定宽度(比如整数、实数或日期结构),则忽略该值。
用于返回可用数据字节数的存储缓冲区的地址。
应用程序还可以将结果集列绑定到程序变量的数组,以支持分块提取结果集行。 有两种不同类型的数组绑定:
当每个列绑定到自身的变量数组时,将完成按列绑定。
通过调用 SQLSetStmtAttr ( 属性 设置为 SQL_ATTR_ROW_BIND_TYPE, ValuePtr 设置为 SQL_BIND_BY_COLUMN)来指定列式绑定。 所有数组的元素个数必须相同。
当 SQL 语句中的所有参数作为一个单元绑定到包含这些参数中各个变量的结构数组时,将完成按行绑定。
通过调用 SQLSetStmtAttr ( 属性 设置为 SQL_ATTR_ROW_BIND_TYPE, ValuePtr 设置为包含将接收结果集列的变量的结构大小)来指定行绑定。
应用程序还将 SQL_ATTR_ROW_ARRAY_SIZE 设置为列或行数组中的元素个数,并设置 SQL_ATTR_ROW_STATUS_PTR 和 SQL_ATTR_ROWS_FETCHED_PTR。