|   | ![[ Previous ]](navbprev.gif)  ![[ Contents ]](navbhome.gif)  ![[ Index ]](navbhelp.gif)  ![[ Next ]](navbnext.gif)  | 
void Ns_PdDbExec(char *handle, char *sql);
This function executes a SQL query. If the SQL is executed successfully, this function should call Ns_PdSendString with OK_STATUS followed by either Ns_PdSendString(EXEC_RET_ROWS) or Ns_PdSendString(EXEC_RET_DML), depending on whether the SQL returned rows or was a DML statement. On failure, the function should use Ns_PdSendException to return an error.
    /* Things italicized would be your DBMS-specific structures and 
calls. */
    void
    Ns_PdDbExec(void *handle, char *sql)
    {
        DBMSState       *state = (DBMSState *) handle;
        int             execRet;
        Ns_PdLog(Trace, "exec(%s):", sql);
        execRet = DBMSExec(state, sql);
        if (execRet == NS_ERROR) {
            Ns_PdSendException(state->exceptionCode, 
    state->exceptionMsg);
        } else {
            Ns_PdSendString(OK_STATUS);
            execRet == DB_ROWS ? Ns_PdSendString(EXEC_RET_ROWS) : 
Ns_PdSendString(EXEC_RET_DML);
        }
    }