示例#1
0
SQLRETURN SQL_API
SQLParamOptions(SQLHSTMT StatementHandle,
		SQLULEN RowNumber,
		SQLULEN *RowNumberPtr)
{
	ODBCStmt *stmt = (ODBCStmt *) StatementHandle;
	RETCODE rc;

#ifdef ODBCDEBUG
	ODBCLOG("SQLParamOptions %p " ULENFMT "\n",
		StatementHandle, ULENCAST RowNumber);
#endif

	/* use mapping as described in ODBC 3 SDK Help file */
	rc = MNDBSetStmtAttr(stmt, SQL_ATTR_PARAMSET_SIZE,
			     (SQLPOINTER) (uintptr_t) RowNumber, 0);

	if (SQL_SUCCEEDED(rc)) {
		rc = MNDBSetStmtAttr(stmt, SQL_ATTR_PARAMS_PROCESSED_PTR,
				     RowNumberPtr, 0);
	}
	return rc;
}
示例#2
0
SQLRETURN SQL_API
SQLSetStmtOption(SQLHSTMT StatementHandle,
                 SQLUSMALLINT Option,
                 SQLULEN ValuePtr)
{
    ODBCStmt *stmt = (ODBCStmt *) StatementHandle;

#ifdef ODBCDEBUG
    ODBCLOG("SQLSetStmtOption " PTRFMT " %s " ULENFMT "\n",
            PTRFMTCAST StatementHandle, translateStmtOption(Option),
            ULENCAST ValuePtr);
#endif

    if (!isValidStmt(stmt))
        return SQL_INVALID_HANDLE;

    clearStmtErrors(stmt);

    switch (Option) {
    /* only the ODBC 1.0 and ODBC 2.0 options */
    case SQL_ROWSET_SIZE:
        Option = SQL_ATTR_ROW_ARRAY_SIZE;
    /* fall through */
    case SQL_QUERY_TIMEOUT:
    case SQL_MAX_ROWS:
    case SQL_NOSCAN:
    case SQL_MAX_LENGTH:
    case SQL_ASYNC_ENABLE:
    case SQL_BIND_TYPE:
    case SQL_CURSOR_TYPE:
    case SQL_CONCURRENCY:
    case SQL_KEYSET_SIZE:
    case SQL_SIMULATE_CURSOR:
    case SQL_RETRIEVE_DATA:
    case SQL_USE_BOOKMARKS:
        /* use mapping as described in ODBC 3.0 SDK Help */
        return MNDBSetStmtAttr(stmt,
                               Option,
                               (SQLPOINTER) (uintptr_t) ValuePtr,
                               SQL_NTS);
    default:
        /* Invalid attribute/option identifier */
        addStmtError(stmt, "HY092", NULL, 0);
        break;
    }

    return SQL_ERROR;
}