Udostępnij przez


Jak Ustawianie opcji kursorów (ODBC)

Aby zestaw Call opcje kursora SQLSetStmtAttr Aby zestaw lub SQLGetStmtAttr Aby uzyskać odpowiednie opcje instrukcja sterowania zachowaniem się kursor.

Attribute

Określa

SQL_ATTR_CURSOR_TYPE

Typ kursor tylko przesyłanie dalej, statyczny, dynamiczne lub opartej na zestaw kluczy

SQL_ATTR_CONCURRENCY

Współbieżność formant opcji tylko do odczytu, blokowania optymistycznego przy użyciu sygnatur czasowych lub optymistycznej przy użyciu wartości

SQL_ATTR_ROW_ARRAY_SIZE

Liczba wierszy pobieranych w każdej pobrania

SQL_ATTR_CURSOR_SENSITIVITY

Kursor jest lub nie pokazuje aktualizacje dokonane przez innych połączeń wierszy kursora

SQL_ATTR_CURSOR_SCROLLABLE

Kursor, które mogą być przewijane do przodu i Wstecz

Domyślne wartości tych atrybutów (rozmiar zestawu zestaw wierszy tylko do przodu, tylko do odczytu, 1) nie używają serwera kursorów.Aby za pomocą serwera kursory, co najmniej jeden z tych atrybutów musi być ustawiona na wartość inną niż domyślna, a instrukcja wykonywany musi być pojedynczej instrukcji SELECT lub procedura przechowywana zawierającą pojedynczą instrukcją SELECT.W przypadku korzystania z serwera kursory, instrukcji SELECT, nie można używać klauzule, nie obsługiwana przez serwer kursorów: COMPUTE, COMPUTE BY, FOR BROWSE i INTO.

Można określić typ używany przez ustawienie SQL_ATTR_CURSOR_TYPE i SQL_ATTR_CONCURRENCY lub przez ustawienie SQL_ATTR_CURSOR_SENSITIVITY i SQL_ATTR_CURSOR_SCROLLABLE kursor.Nie należy mieszać dwie metody określania zachowania kursor.

Example

Poniższy przykład przydziela dojścia instrukcja, ustawia typ kursor dynamicznych z wiersza wersji optymistycznej współbieżność, a następnie wykonuje SELECT.

retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);
retcode = SQLSetStmtAttr(hstmt1, SQL_ATTR_CURSOR_TYPE, (SQLPOINTER)SQL_CURSOR_DYNAMIC, _IS_INTEGER);
retcode = SQLSetStmtAttr(hstmt1, SQL_ATTR_CONCURRENCY, SQLPOINTER)SQL_CONCUR_ROWVER, _IS_INTEGER);
retcode = SQLExecDirect(hstmt1, SELECT au_lname FROM authors", SQL_NTS);

Poniższy przykład przydziela dojścia instrukcja, ustawia kursor przewijaną, wielkość liter, a następnie wykonuje SELECT

retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);

// Set the cursor options and execute the statement.
retcode = SQLSetStmtAttr(hstmt1, SQL_ATTR_CURSOR_SCROLLABLE, SQLPOINTER)SQL_SCROLLABLE, _IS_INTEGER);
retcode = SQLSetStmtAttr(hstmt1, SQL_ATTR_CURSOR_SENSITIVITY, SQLPOINTER)SQL_INSENSITIVE, _IS_INTEGER);
retcode = SQLExecDirect(hstmt1, select au_lname from authors", SQL_NTS);