Udostępnij za pośrednictwem


Konstruowanie instrukcje SQL dla kursory

The SQL Server Native klient ODBC driver uses server cursors to implement the kursor functionality defined in the ODBC specification. Aplikacji ODBC steruje zachowaniem folderu kursor za pomocą SQLzestawStmtAttr do zestaw instrukcja różne atrybuty.Są to atrybuty 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 instrukcję SQL zostanie wykonany, SQL Server Macierzysty sterownik ODBC klient nie jest używany do wykonania zestaw wyników kursor serwera; zamiast tego używa domyślnego zestaw wyników. Jeśli dowolne z tych opcji są zmieniane z ich ustawienia domyślne w czasie wykonywania instrukcja języka SQL SQL Server Macierzysty sterownik ODBC klient próbuje wdrożyć zestaw wyników za pomocą kursor serwera.

Domyślne zestawy wyników obsługuje wszystkie Transact-SQL instrukcje. Nie ma żadnych ograniczeń dotyczących typów instrukcji SQL, które mogą być wykonywane podczas korzystania z domyślny zestaw wyników.

Serwer kursory nie są obsługiwane wszystkie Transact-SQL instrukcje. Kursory serwer nie obsługuje żadnych instrukcja języka SQL, która generuje wiele zestawów wyników.

Następujące typy instrukcji nie są obsługiwane przez serwer kursorów:

  • Partie

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

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

    instrukcja SQL, których wykonać procedura przechowywana zawierającej więcej niż jedną instrukcję SELECT.Dotyczy to także instrukcji SELECT, wprowadź parametry i zmienne.

  • Słowa kluczowe

    Instrukcje SQL zawierających słowa kluczowe COMPUTE COMPUTE BY FOR BROWSE i INTO.

W SQL Server, jeśli instrukcję SQL, która pasuje do żadnego z tych warunków zostanie wykonany z kursor serwera, kursor serwera jest niejawnie konwertowane na domyślny zestaw wyników. Po SQLExecDirect or SQLExecute zwraca SQL_SUCCESS_WITH_INFO, atrybuty kursor zostanie ustawiony ponownie do ustawień domyślnych.

Instrukcje SQL, które nie mieszczą się w powyższych kategoriach mogą być wykonywane z wszystkich ustawień atrybut instrukcja, działają równie dobrze z domyślnego zestaw wyników lub kursor serwera.

Błędy

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

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

Aplikacje ODBC odbierania tej wiadomości, mogą wywoływać SQLGetStmtAttr , aby określić bieżące ustawienia kursor.

Podjęto próbę wykonać procedury z wielu instrukcji SELECT, podczas korzystania z 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.

Podjęto próbę wykonać wsadowego z wielu instrukcji SELECT podczas korzystania z 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.

Podjęto próbę wykonać instrukcja SELECT zawierająca klauzulę COMPUTE podczas korzystania z kursorów serwer generuje następujący komunikat o błędzie:

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

Odbierania tych błędów aplikacji ODBC musi zresetować wszystkie atrybuty instrukcja kursor na domyślne przed przystąpieniem do wykonywania instrukcja.

See Also

Concepts