直接执行语句,只执行一次
- 如果语句具有参数标记,请使用 SQLBindParameter 将每个参数绑定到程序变量。 使用数据值填充程序变量,然后设置任何执行时的数据参数。 
- 调用 SQLExecDirect 来执行该语句。 
- 如果使用数据执行时输入参数, SQLExecDirect 将返回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 变量的数组[S],以保存参数状态指示器。 
- 对于每个参数标记: - 分配 S 参数缓冲区数组来存储数据值。 - 分配 S 参数缓冲区数组以存储数据长度。 - 调用 SQLBindParameter 将参数数据值和数据长度数组绑定到语句参数。 - 设置执行时的任何数据或图像参数。 - 将 S 数据值和 S 数据长度放入绑定参数数组中。 
- 调用 SQLExecDirect 来执行该语句。 驱动程序针对每个参数集有效地执行语句 S 时间一次。 
- 如果使用数据执行时输入参数, SQLExecDirect 将返回SQL_NEED_DATA。 使用 SQLParamData 和 SQLPutData 以区块方式发送数据。 
使用行参数绑定多次执行语句
- 分配结构的数组[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 变量的数组[S],以保存参数状态指示器。 
- 对于每个参数标记,调用 SQLBindParameter 以将参数的数据值和数据长度指针指向在步骤 1 中分配的结构数组的第一个元素中的变量。 如果参数是执行时的数据参数,请设置它。 
- 使用数据值填充绑定参数缓冲区数组。 
- 调用 SQLExecDirect 来执行该语句。 驱动程序针对每个参数集有效地执行语句 S 时间一次。 
- 如果使用数据执行时输入参数, SQLExecDirect 将返回SQL_NEED_DATA。 使用 SQLParamData 和 SQLPutData 以区块方式发送数据。 
注意与 SQLExecDirect 相比,按列和行绑定通常与 SQLPrepare 函数和 SQLExecute 结合使用。