使用列式绑定
对于每个绑定列,请执行以下作:
分配 R(或更多)列缓冲区数组来存储数据值,其中 R 是行集中的行数。
(可选)分配 R(或更多)列缓冲区数组以存储数据长度。
调用 SQLBindCol 将列的数据值和数据长度数组绑定到行集的列。
调用 SQLSetStmtAttr 以设置以下属性:
将SQL_ATTR_ROW_ARRAY_SIZE设置为行集中的行数(R)。
将SQL_ATTR_ROW_BIND_TYPE设置为SQL_BIND_BY_COLUMN。
将 SQL_ATTR_ROWS FETCHED_PTR 属性设置为指向 SQLUINTEGER 变量以保存提取的行数。
将SQL_ATTR_ROW_STATUS_PTR设置为指向 SQLUSSMALLINT 变量的数组[R],以保存行状态指示器。
执行语句。
每次调用 SQLFetch 或 SQLFetchScroll 都会检索 R 行并将数据传输到绑定列中。
使用行式绑定
分配结构数组[R],其中 R 是行集中的行数。 该结构具有每个列的一个元素,每个元素有两个部分:
第一部分是用于保存列数据的相应数据类型的变量。
第二部分是用于保存列状态指示器的 SQLINTEGER 变量。
调用 SQLSetStmtAttr 以设置以下属性:
将SQL_ATTR_ROW_ARRAY_SIZE设置为行集中的行数(R)。
将SQL_ATTR_ROW_BIND_TYPE设置为步骤 1 中分配的结构的大小。
将 SQL_ATTR_ROWS_FETCHED_PTR 属性设置为指向 SQLUINTEGER 变量以保存提取的行数。
将SQL_ATTR_PARAMS_STATUS_PTR设置为指向 SQLUSSMALLINT 变量的数组[R],以保存行状态指示器。
对于结果集中的每一列,调用 SQLBindCol ,将列的数据值和数据长度指针指向步骤 1 中分配的结构数组的第一个元素中的变量。
执行语句。
每次调用 SQLFetch 或 SQLFetchScroll 都会检索 R 行并将数据传输到绑定列中。