如何准备和执行语句 (ODBC)
准备一次语句,然后多次执行它
调用 SQLPrepare 以预定义语句。
(可选)调用 SQLNumParams 以确定预定义语句中的参数个数。
(可选)对于预定义语句中的每个参数:
调用 SQLDescribeParam 以获得参数信息。
通过使用 SQLBindParameter,将每个参数绑定到程序变量。设置任何执行时数据参数。
对于每次执行预定义语句:
如果语句有参数标记,请将数据值放到绑定参数缓冲区中。
调用 SQLExecute 以执行预定义语句。
如果使用执行时数据输入参数,则 SQLExecute 返回 SQL_NEED_DATA。通过使用 SQLParamData 和 SQLPutData,分块区发送数据。
用按列参数绑定预定义语句
调用 SQLSetStmtAttr 以设置以下属性:
将 SQL_ATTR_PARAMSET_SIZE 设置为参数的集合数 (S)。
将 SQL_ATTR_PARAM_BIND_TYPE 设置为 SQL_PARAMETER_BIND_BY_COLUMN。
将 SQL_ATTR_PARAMS_PROCESSED_PTR 属性设置为指向 SQLUINTEGER 变量,以包含所处理的参数个数。
将 SQL_ATTR_PARAMS_STATUS_PTR 设置为指向 SQLUSSMALLINT 变量的数组 array[S],以包含参数状态指示器。
调用 SQLPrepare 以预定义语句。
(可选)调用 SQLNumParams 以确定预定义语句中的参数个数。
(可选)对于预定义语句中的每个参数,调用 SQLDescribeParam 以获得参数信息。
对于每个参数标记:
分配由 S 个参数缓冲区组成的数组以存储数据值。
分配由 S 个参数缓冲区组成的数组以存储数据长度。
调用 SQLBindParameter 将参数数据值和数据长度数组绑定到语句参数。
如果参数是执行时数据文本或映像参数,则设置它。
如果使用任何执行时数据参数,则设置它们。
对于每次执行预定义语句:
将 S 个数据值和 S 个数据长度放到绑定参数数组中。
调用 SQLExecute 以执行预定义语句。
如果使用执行时数据输入参数,则 SQLExecute 返回 SQL_NEED_DATA。通过使用 SQLParamData 和 SQLPutData,分块区发送数据。
用按行绑定参数预定义语句
分配结构数组 array[S],其中,S 是参数的集合数。该结构对于每个参数有一个元素,并且每个元素有两部分:
第一部分是合适的数据类型的变量,以包含参数数据。
第二部分是 SQLINTEGER 变量,用于包含状态指示器。
调用 SQLSetStmtAttr 以设置以下属性:
将 SQL_ATTR_PARAMSET_SIZE 设置为参数的集合数 (S)。
将 SQL_ATTR_PARAM_BIND_TYPE 设置为在步骤 1 中分配的结构的大小。
将 SQL_ATTR_PARAMS_PROCESSED_PTR 属性设置为指向 SQLUINTEGER 变量,以包含所处理的参数个数。
将 SQL_ATTR_PARAMS_STATUS_PTR 设置为指向 SQLUSSMALLINT 变量的数组 array[S],以包含参数状态指示器。
调用 SQLPrepare 以预定义语句。
对于每个参数标记,调用 SQLBindParameter,使得参数数据值和数据长度指针指向其在步骤 1 中分配的结构数组的第一个元素中的变量。如果参数是执行时数据参数,则设置它。
对于每次执行预定义语句:
用数据值填充绑定参数缓冲区数组。
调用 SQLExecute 以执行预定义语句。驱动程序将有效地执行 SQL 语句 S 次,每组参数一次。
如果使用执行时数据输入参数,则 SQLExecute 返回 SQL_NEED_DATA。通过使用 SQLParamData 和 SQLPutData,分块区发送数据。