SQLExecute-执行语句

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

语法

SQLRETURN SQLExecute (SQLHSTMT     hstmt);

函数自变量

表 1. SQLExecute 参数
数据类型 自变量 使用 描述
SQLHSTMT hstmt 输入 语句句柄。 不能有与 hstmt 关联的打开游标,请参阅 SQLFreeStmt -Free (或 reset) a statement handle 以获取更多信息。

用法

SQL 语句字符串可能包含参数标记。 参数标记由 "?" 表示 字符,并在调用 SQLExecute() 时指示语句中要替换应用程序变量值的位置。 SQLBindParam() 用于将应用程序变量绑定 (或关联) 到每个参数标记,并指示在传输数据时是否应执行任何数据转换。 在调用 SQLExecute()之前,必须绑定所有参数。

一旦应用程序处理了 SQLExecute() 调用的结果,它就可以在应用程序变量中使用新的 (或相同的) 值再次处理该语句。

无法通过调用 SQLExecute()来重新处理由 SQLExecDirect() 处理的语句; 必须首先调用 SQLPrepare()

如果预编译 SQL 语句是 SELECT ,那么 SQLExecute() 将生成游标名,并打开该游标。 如果应用程序使用 SQLSetCursorName() 将游标名称与语句句柄关联起来,Db2 for i CLI 会将应用程序生成的游标名称与内部生成的游标名称关联起来。

要多次处理 SELECT 语句,应用程序必须通过调用带有 SQL_CLOSE 选项的 SQLFreeStmt() 来关闭游标。 调用 SQLExecute()时,语句句柄上不得有打开的游标。

要从 SELECT 语句生成的结果集中检索行,请在 SQLExecute() 成功返回后调用 SQLFetch()

如果 SQL 语句是定位 DELETE 或定位 UPDATE 语句,那么在调用 SQLExecute() 时,该语句所引用的游标必须定位在行上,并且必须定义在同一连接句柄下的单独语句句柄上。

返回码

  • SQL_SUCCESS
  • sql_success_with_info
  • SQL_ERROR
  • sql_invalid_handle
  • sql_noo_data_found
  • SQL_NEED_DATA

如果 SQL 语句是 "已设置的 UPDATE" 或 "已设置的 DELETE" ,并且没有任何行满足搜索条件,那么将返回 SQL_NO_DATA_FOUND。

诊断

SQLExecute() 的 SQLSTAT 包括 SQLExecDirect() 的所有 SQL STAT (请参阅 表 2) ,但 HY009 除外,并在下表中添加了 SQLSTAT。
表 2。 SQLExecute SQLSTAT
SQLSTATE 描述 说明
HY009 语句选项无效 与正在执行的语句相关联的属性无效。
HY010 函数顺序错误 指定的 hstmt 未处于已准备状态。 在不首先调用 SQLPrepare的情况下调用 SQLExecute()
HY021 内部描述符无效 无法寻址或分配内部描述符,或者它包含无效的值。
注: 在处理语句时,可以由数据库管理系统 (DBMS) 生成许多其他 SQLSTATE 值。

示例

请参阅 SQLprepare-Prepare a statement 中的示例

引用