h:DWORD StatementHandle. 要使用的语句句柄 pStatementText. 指向要执行的SQL语句的指针 TextLength. SQL语句的长度. 可能的返回值如下: SQL_SUCCESS操作顺利SQL_SUCCESS_WITH_INFO操作顺利但可能产生非致命错误SQL_ERROR操作失败SQL_INVALID_HANDLE使用的语句句柄非法SQL_NEED_DATA如果在执行SQL语句前没有提供足够的参数将会获得这个返回值.这时需调用SQLParamData 或 SQLPutData函数来提交参数.SQL_NO_DATA如果SQL语句不返回结果集,例如只是一个查询动作,将获得这个返回值。使用户知道动作成功,但没有结果集被返回。SQL_STILL_EXECUTING如果异步执行SQL语句, SQLExecDirect 会立刻返回这个值,表明语句正在执行。在通常情况下,如果你使用的一个多线程操作系统,异步执行是一个好主意。如果你希望异步执行,旧可以通过SQLSetStmtAttr来设置语句属性。 例子:
.data SQLStmt db "select * from Sales",0
.data? hStmt dd ?
.code ..... invoke SQLAllocHandle, SQL_HANDLE_STMT, hConn, addr hStmt .if ax==SQL_SUCCESS || ax==SQL_SUCCESS_WITH_INFO invoke SQLExecDirect, hStmt, addr SQLStmt, sizeof SQLStmt 编译执行 SQL的执行被分为两步:第一步,必须通过调用函数SQLPrepare来*准备*语句。第二步,通过调用SQLExecute函数来执行语句.在使用编译执行时,我们可以多次调用SQLExecute来执行同一语句. 结合使用SQL参数,这个方法对执行同一语句极为有效。
SQLPrepare 与SQLExecDirect使用相同的三个参数,所以这里不再写出函数原型。 SQLExecute 语法:
SQLExecute proto StatementHandle:DWORD
只须这一个参数,我想不再需要解释了;)
例子:
.data SQLStmt db "select * from Sales",0
.data? hStmt dd ?
.code ..... invoke SQLAllocHandle, SQL_HANDLE_STMT, hConn, addr hStmt .if ax==SQL_SUCCESS || ax==SQL_SUCCESS_WITH_INFO invoke SQLPrepare, hStmt, addr SQLStmt, sizeof SQLStmt invoke SQLExecute, hStmt
你也许会想,编译执行没什么强于直接执行的。上面的例子还不明显。我们需要知道SQL语句的参数来仔细研究它。 语句参数(Statement Parameters) 这里的参数是指由SQL语句使用的变量.比如说我们有一个叫做 "employee"的表,它有三个上一页 [1] [2] [3] [4] [5] 下一页
|