Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aplikacja może określić charakterystykę kursora zamiast określać typ kursora (tylko do przodu, statyczny, oparty na kluczu lub dynamiczny). W tym celu aplikacja wybiera możliwość przewijania kursora (ustawiając atrybut instrukcji SQL_ATTR_CURSOR_SCROLLABLE) i czułość (ustawiając atrybut instrukcji SQL_ATTR_CURSOR_SENSITIVITY) przed otwarciem kursora na dojściu instrukcji. Następnie sterownik wybiera typ kursora, który najefektywniej zapewnia charakterystykę żądaną przez aplikację.
Za każdym razem, gdy aplikacja ustawia dowolne atrybuty instrukcji SQL_ATTR_CONCURRENCY, SQL_ATTR_CURSOR_SCROLLABLE, SQL_ATTR_CURSOR_SENSITIVITY lub SQL_ATTR_CURSOR_TYPE, sterownik wprowadza wszelkie wymagane zmiany w innych atrybutach instrukcji w tym zestawie czterech atrybutów, aby ich wartości pozostały spójne. W związku z tym, gdy aplikacja określa charakterystykę kursora, sterownik może zmienić atrybut wskazujący typ kursora na podstawie tego niejawnego zaznaczenia; gdy aplikacja określa typ, sterownik może zmienić dowolny z innych atrybutów, aby był zgodny z cechami wybranego typu. Aby uzyskać więcej informacji na temat tych atrybutów instrukcji, zobacz opis funkcji SQLSetStmtAttr .
Aplikacja, która ustawia atrybuty instrukcji w celu określenia zarówno typu kursora, jak i właściwości kursora, wiąże się z ryzykiem uzyskania kursora, który nie jest najbardziej wydajną metodą dostępną dla tego sterownika spełniającego wymagania aplikacji.
Niejawne ustawienie atrybutów instrukcji jest definiowane przez sterownik, z tą różnicą, że musi przestrzegać następujących reguł:
Kursorów tylko do przodu nie można nigdy przewijać; zobacz definicję SQL_ATTR_CURSOR_SCROLLABLE w SQLSetStmtAttr.
Niewrażliwe kursory nigdy nie są aktualizowalne (a zatem ich współbieżność jest tylko do odczytu); Jest to oparte na ich definicji niewrażliwych kursorów w standardzie ISO SQL.
W związku z tym niejawne ustawienie atrybutów instrukcji występuje w przypadkach opisanych w poniższej tabeli.
| Ustawia atrybut w aplikacji | Inne atrybuty ustawiane niejawnie |
|---|---|
| SQL_ATTR_CONCURRENCY: SQL_CONCUR_READ_ONLY | SQL_ATTR_CURSOR_SENSITIVITY na SQL_INSENSITIVE. |
| SQL_ATTR_CONCURRENCY do SQL_CONCUR_LOCK, SQL_CONCUR_ROWVER lub SQL_CONCUR_VALUES | SQL_ATTR_CURSOR_SENSITIVITY do SQL_UNSPECIFIED lub SQL_SENSITIVE zgodnie z definicją sterownika. Nigdy nie można ustawić go na SQL_INSENSITIVE, ponieważ niewrażliwe kursory są zawsze tylko do odczytu. |
| Ustawienie SQL_ATTR_CURSOR_SCROLLABLE na SQL_NONSCROLLABLE | SQL_ATTR_CURSOR_TYPE do SQL_CURSOR_FORWARD_ONLY |
| SQL_ATTR_CURSOR_SCROLLABLE do SQL_SCROLLABLE | SQL_ATTR_CURSOR_TYPE do SQL_CURSOR_STATIC, SQL_CURSOR_KEYSET_DRIVEN lub SQL_CURSOR_DYNAMIC, zgodnie z określeniami sterownika. Nigdy nie jest ustawiona na SQL_CURSOR_FORWARD_ONLY. |
| SQL_ATTR_CURSOR_SENSITIVITY na SQL_INSENSITIVE | SQL_ATTR_CONCURRENCY na SQL_CONCUR_READ_ONLY. SQL_ATTR_CURSOR_TYPE na SQL_CURSOR_STATIC. |
| SQL_ATTR_CURSOR_SENSITIVITY do SQL_SENSITIVE | SQL_ATTR_CONCURRENCY na SQL_CONCUR_LOCK, SQL_CONCUR_ROWVER lub SQL_CONCUR_VALUES, zgodnie z określeniem sterownika. Nigdy nie jest ustawiona na SQL_CONCUR_READ_ONLY. SQL_ATTR_CURSOR_TYPE do SQL_CURSOR_FORWARD_ONLY, SQL_CURSOR_STATIC, SQL_CURSOR_KEYSET_DRIVEN lub SQL_CURSOR_DYNAMIC, zgodnie z ustawieniami sterownika. |
| SQL_ATTR_CURSOR_SENSITIVITY do SQL_UNSPECIFIED | SQL_ATTR_CONCURRENCY można ustawić na SQL_CONCUR_READ_ONLY, SQL_CONCUR_LOCK, SQL_CONCUR_ROWVER lub SQL_CONCUR_VALUES, zgodnie z określeniami sterownika. SQL_ATTR_CURSOR_TYPE do SQL_CURSOR_FORWARD_ONLY, SQL_CURSOR_STATIC, SQL_CURSOR_KEYSET_DRIVEN lub SQL_CURSOR_DYNAMIC, zgodnie ze sterownikiem. |
| SQL_ATTR_CURSOR_TYPE na SQL_CURSOR_DYNAMIC | SQL_ATTR_SCROLLABLE na SQL_SCROLLABLE. SQL_ATTR_CURSOR_SENSITIVITY to SQL_SENSITIVE. (Ale tylko wtedy, gdy SQL_ATTR_CONCURRENCY nie jest równa SQL_CONCUR_READ_ONLY. Dynamiczne kursory z możliwością aktualizacji są zawsze wrażliwe na zmiany wprowadzone we własnej transakcji). |
| SQL_ATTR_CURSOR_TYPE do SQL_CURSOR_FORWARD_ONLY | SQL_ATTR_CURSOR_SCROLLABLE do SQL_NONSCROLLABLE. |
| SQL_ATTR_CURSOR_TYPE na SQL_CURSOR_KEYSET_DRIVEN | SQL_ATTR_SCROLLABLE to SQL_SCROLLABLE. SQL_ATTR_SENSITIVITY SQL_UNSPECIFIED lub SQL_SENSITIVE (zgodnie z kryteriami zdefiniowanymi przez sterownik, jeśli SQL_ATTR_CONCURRENCY nie jest SQL_CONCUR_READ_ONLY). |
| SQL_ATTR_CURSOR_TYPE do SQL_CURSOR_STATIC | Ustaw wartość SQL_ATTR_SCROLLABLE na SQL_SCROLLABLE. SQL_ATTR_SENSITIVITY na SQL_INSENSITIVE (jeśli SQL_ATTR_CONCURRENCY jest SQL_CONCUR_READ_ONLY) Ustaw SQL_ATTR_SENSITIVITY na SQL_UNSPECIFIED lub SQL_SENSITIVE (jeśli SQL_ATTR_CONCURRENCY nie jest SQL_CONCUR_READ_ONLY). |