规范: | DB2 CLI 1.1 | ODBC 1.0 | ISO CLI |
SQLPrepare() 将一个 SQL 语句与输入语句句柄相关联,并将该语句发送至要准备的 DBMS。应用程序可以通过将语句句柄传送至其它函数来引用这个准备好的语句。
如果该语句句柄先前是配合查询语句(或任何返回结果集的函数)使用的,则在调用 SQLPrepare() 之前,必须调用 SQLFreeStmt()。
语法
SQLRETURN SQLPrepare (SQLHSTMT StatementHandle, /* hstmt */ SQLCHAR FAR *StatementText, /* szSqlStr */ SQLINTEGER TextLength); /* cbSqlStr */
函数自变量
数据类型 | 自变量 | 使用 | 描述 |
---|---|---|---|
SQLHSTMT | StatementHandle | 输入 | 语句句柄。 |
SQLCHAR | StatementText | 输入 | SQL 语句字符串 |
SQLINTEGER | TextLength | 输入 | StatementText 自变量的内容的长度。
这必须设置为 szSqlstr 中 SQL 语句的精确长度,或者,如果语句文本以 null 结束,则必须设置为 SQL_NTS。 |
用法
在使用 SQLPrepare() 准备语句之后,应用程序可以通过调用下列函数之一来请求关于结果集格式的信息(如果语句是查询的话):
SQL 语句字符串可以包含参数标记。参数标记由 ? 字符表示,用来指示语句中的一个位置, 调用 SQLExecute() 时,将会在该位置中换上应用程序提供的值。绑定参数函数 SQLBindParameter() 使应用程序值与每个参数标记绑定在一起(产生关联),指示在传送数据时是否应执行任何数据转换。
在调用 SQLExecute() 之前,必须绑定所有参数。有关更多信息,参阅SQLExecute - 执行语句。
参阅 DB2 Universal Database SQL Reference 中有关 PREPARE 语句的章节以获取与参数标记相关的规则的信息。
在应用程序处理完 SQLExecute() 调用的结果之后,它可以再次执行该语句,并指定新的(或相同的)参数值。
返回码
诊断
SQLSTATE | 描述 | 解释 |
---|---|---|
42nnn | 语法错误。 | 42nnn SQLSTATE 指示与语句相关的各种语法或访问问题。字符 nnn 指的是任何具有该类代码的 SQLSTATE。示例:42nnn 指的是 42 类中的任何 SQLSTATE。 |
58004 | 意外系统故障。 | 不可恢复的系统错误。 |
HY001 | 内存分配失败。 | DB2 CLI 无法分配支持函数的执行或完成所需的内存。 |
HY009 | 自变量值无效。 | StatementText 是空指针。 |
HY013 | 发生意外的内存处理错误。 | DB2 CLI 无法访问支持函数的执行或完成所需的内存。 |
HY014 | 不再有句柄。 | 因为内部资源问题,DB2 CLI 无法分配句柄。 |
HY090 | 字符串或缓冲区长度无效。 | TextLength 自变量小于 1,但不等于 SQL_NTS。 |
限制
无。
相关参考