SQLExecute() executes a statement, that is successfully prepared using SQLPrepare(), once or multiple times. The statement is processed using the current values of any application variables that were bound to parameter markers by SQLBindParam().
SQLRETURN SQLExecute (SQLHSTMT hstmt);
Data type | Argument | Use | Description |
---|---|---|---|
SQLHSTMT | hstmt | Input | Statement handle. There must not be an open cursor associated with hstmt, see SQLFreeStmt - Free (or reset) a statement handle for more information. |
The SQL statement string might contain parameter markers. A parameter marker is represented by a "?" character, and indicates a position in the statement where the value of an application variable is to be substituted, when SQLExecute() is called. SQLBindParam() is used to bind (or associate) an application variable to each parameter marker, and to indicate if any data conversion should be performed at the time the data is transferred. All parameters must be bound before calling SQLExecute().
As soon as the application has processed the results from the SQLExecute() call, it can process the statement again with new (or the same) values in the application variables.
A statement processed by SQLExecDirect() cannot be reprocessed by calling SQLExecute(); SQLPrepare() must be called first.
If the prepared SQL statement is a SELECT, SQLExecute() generates a cursor name, and opens the cursor. If the application has used SQLSetCursorName() to associate a cursor name with the statement handle, DB2® UDB CLI associates the application generated cursor name with the internally generated cursor name.
To process a SELECT statement more than once, the application must close the cursor by calling call SQLFreeStmt() with the SQL_CLOSE option. There must not be an open cursor on the statement handle when calling SQLExecute().
To retrieve a row from the result set generated by a SELECT statement, call SQLFetch() after SQLExecute() returns successfully.
If the SQL statement is a positioned DELETE or a positioned UPDATE, the cursor referenced by the statement must be positioned on a row at the time SQLExecute() is called, and must be defined on a separate statement handle under the same connection handle.
SQL_NO_DATA_FOUND is returned if the SQL statement is a Searched UPDATE or Searched DELETE and no rows satisfy the search condition.
SQLSTATE | Description | Explanation |
---|---|---|
HY010 | Function sequence error | The specified hstmt is not in prepared state. SQLExecute() is called without first calling SQLPrepare. |
HY021 | Internal descriptor that is not valid | The internal descriptor cannot be addressed or allocated, or it contains a value that is not valid. |
Note: There
are many other SQLSTATE values that can be generated by the Database Management
System (DBMS), on processing of the statement.
|
Refer to the SQLPrepare() rzadpfnprep.htm#rzadpfnprep__xmprep