SQLExecute - 执行语句

用途


规范: DB2 CLI 1.1 ODBC 1.0 ISO CLI

SQLExecute() 将使用 SQLPrepare() 成功准备的语句执行一次或多次。使用 SQLBindParameter() 绑定至参数标记的任何应用程序变量的当前值执行该语句。

语法

SQLRETURN   SQLExecute       (SQLHSTMT          StatementHandle);  /* hstmt */

函数自变量

表 46. SQLExecute 自变量

数据类型 自变量 使用 描述
SQLHSTMT StatementHandle 输入 语句句柄。

用法

SQL 语句字符串可以包含参数标记。参数标记由 ? 字符表示,用来指示语句中的一个位置,调用 SQLExecute() 时,将会替换应用程序在该位置中提供的值。此值可以从应用程序变量获取。SQLBindParameter() 用来将应用程序存储区与参数标记绑定。

在调用 SQLExecute() 之前,必须绑定所有参数。

在应用程序处理完 SQLExecute() 调用的结果之后,它可以再次执行该语句,并指定新的(或相同的)参数值。

不能通过调用 SQLExecute() 重新执行由 SQLExecDirect() 执行的语句;必须首先调用 SQLPrepare()

如果生成了结果集,则 SQLFetch() 把下一行数据检索到绑定的变量中。也可以通过对任何未绑定的列调用 SQLGetData() 来检索数据。

返回码

如果 SQL 语句是“搜索型 UPDATE”或“搜索型 DELETE”,且没有任何行满足搜索条件,则返回 SQL_NO_DATA_FOUND。

诊断

SQLExecute() 的 SQLSTATE 包括 SQLExecDirect() 的所有 SQLSTATE(参阅表 45)(HY009 和 HY090 除外), 同时还包括表 47 中的 SQLSTATE。

表 47. SQLExecute SQLSTATE

SQLSTATE 描述 解释
HY010 函数顺序错误。 指定的 StatementHandle 未处于已准备状态。调用 SQLExecute() 之前 未首先调用 SQLPrepare()
08004 应用程序服务器拒绝了连接。 用来连接至数据源的用户名或密码不正确。
08S01 通信链路故障。 函数尚未完成,应用程序与数据源间的通信链路就失效了。
39001 用户定义的函数返回了无效的 SQLSTATE。 用户定义的函数返回了无效的 SQLSTATE。
59101 未定义用户。 在“移动设备管理中心”控制数据库中未定义用户。
59102 密码不正确。 用户密码与“移动设备管理中心”中定义的密码不匹配。
59103 未定义组。 在“移动设备管理中心”中未定义组。
59104 未定义应用程序。 在“移动设备管理中心”中未定义应用程序。
59105 未定义预订。 在“移动设备管理中心”中未定义具有 "AgentAdapter" 的预订。
59106 预订不完整。 预订没有调用远程存储过程所需的所有信息。
59120 XML 转换错误。 AgentAdapter 在将用户输入数据转换为 XML 文档时失败。
59121 一般 AgentAdapter 错误。 一般 AgentAdapter 错误。
59122 装入库失败。 系统上找不到某些必需的库。
HY501 数据源名称无效。 指定的数据源名称无效。

限制

无。

相关参考