Udostępnij za pośrednictwem


Tworząc instrukcje SQL dla kursory

SQL Server Sterownik ODBC macierzystym klienta używa kursory serwera, aby zaimplementować funkcję kursor zdefiniowane w specyfikacji ODBC.Aplikacji ODBC kontroluje zachowanie kursor za pomocą SQLzestawStmtAttr do zestaw atrybuty różnych instrukcja.Są to atrybutów i ich ustawienia domyślne.

Attribute

Default

SQL_ATTR_CONCURRENCY

SQL_CONCUR_READ_ONLY

SQL_ATTR_CURSOR_TYPE

SQL_CURSOR_FORWARD_ONLY

SQL_ATTR_CURSOR_SCROLLABLE

SQL_NONSCROLLABLE

SQL_ATTR_CURSOR_SENSITIVITY

SQL_UNSPECIFIED

SQL_ATTR_ROW_ARRAY_SIZE

1

Kiedy te opcje są ustawione wartości domyślne w czas jest wykonywana instrukcja SQL, SQL Server sterownik ODBC macierzystym klienta nie używać kursor serwera do zaimplementowania zestaw wyników; Zamiast tego używa domyślny zestaw wyników.Jeśli te opcje nie zostaną zmienione wartości domyślne w czas jest wykonywana instrukcja SQL, SQL Server sterownik ODBC macierzysty klient próbuje użyć kursor serwera do zaimplementowania zestaw wyników.

Zestawy wyników domyślne obsługują wszystkie Transact-SQL instrukcji.Nie ma żadnych ograniczeń na typy instrukcji SQL, które mogą być wykonywane przy użyciu domyślny zestaw wyników.

Kursory serwera nie obsługują wszystkie Transact-SQL instrukcji.Kursory serwer nie obsługuje żadnych instrukcja języka SQL, która generuje wiele zestawów wyników.

Następujące typy sprawozdań nie są obsługiwane przez serwer kursory:

  • Partie

    Instrukcje SQL składa się z dwóch lub więcej pojedynczych instrukcji SQL SELECT, na przykład:

    SELECT * FROM Authors; SELECT * FROM Titles
    
  • Procedury przechowywane z wielu instrukcji SELECT

    instrukcja SQL, których wykonać procedura składowana zawierającej więcej niż jedną instrukcję SELECT.Zawiera instrukcje SELECT, które wypełnienia parametrów lub zmienne.

  • Słowa kluczowe

    Instrukcje SQL zawierających słowa kluczowe OBLICZYĆ COMPUTE BY, aby PRZEGLĄDAĆ lub INTO.

W SQL Server, jeśli instrukcja języka SQL, które dopasowuje dowolny z tych warunków jest wykonywane z kursorem serwera, kursor serwera są niejawnie konwertowane na domyślny zestaw wyników.Po SQLExecDirect lub SQLExecute zwraca wartość SQL_SUCCESS_WITH_INFO, kursor będzie atrybutów zestaw do ich domyślnych zestawtings.

instrukcja SQL, których nie dopasowanie powyższych kategorii mogą być wykonywane przez wszystkie ustawienia atrybut instrukcja; działają równie dobrze z domyślny zestaw wyników lub kursor serwera.

Błędy

W SQL Server 7.0 i nowszymi próba wykonać instrukcja, która generuje wiele zestawów wyników generuje informacje O SQL_SUCCESS_WITH i następujący komunikat:

SqlState: 01S02"
pfNative: 0
szErrorMsgString: "[Microsoft][SQL Server Native Client][SQL Server]
               Cursor type changed."

Ten komunikat aplikacji ODBC może wywołać SQLGetStmtAttr do określenia bieżące ustawienia kursor.

Próba wykonać procedury z wielu instrukcji SELECT podczas używania kursorów serwer generuje następujący komunikat o błędzie:

SqlState: 42000
pfNative: 16937
szErrorMsgString: [Microsoft][SQL Server Native Client][SQL Server]
               A server cursor is not allowed on a stored procedure
               with more than one SELECT statement in it. Use a
               default result set or client cursor.

Próba wykonać partia z wielu instrukcji SELECT podczas używania kursorów serwer generuje następujący komunikat o błędzie:

SqlState: 42000
pfNative: 16938
szErrorMsgString: [Microsoft][SQL Server Native Client][SQL Server]
               sp_cursoropen. The statement parameter can only
               be a single SELECT statement or a single stored 
               procedure.

Próba wykonać instrukcja SELECT zawierającej obliczeń klauzula po użyciu kursory serwera generuje następujący błąd:

SqlState: 42000
pfNative: 16907
szErrorMsgString: [Microsoft][SQL Server Native Client][SQL Server]
               'COMPUTE' is not allowed in cursor statements.

Przed próbą wykonać instrukcja odbierania tych błędów aplikacji ODBC należy zresetować wszystkie atrybuty instrukcja kursor domyślne.

Zobacz także

Koncepcje