SQLPrepare - 准备语句

用途

规范: 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 */

函数自变量

表 74. SQLPrepare 自变量

数据类型 自变量 使用 描述
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() 调用的结果之后,它可以再次执行该语句,并指定新的(或相同的)参数值。

返回码

诊断

表 75. SQLPrepare SQLSTATE

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。

限制

无。

相关参考