Changing Rows with Positioned Operations
Można aktualizować kursory obsługuje instrukcji modyfikacji danych, które aktualizowania wierszy przez kursor.Jeśli umieszczona na wiersz w aktualizowalnego kursor, można przeprowadzić aktualizację lub usunąć operacje, które docelowe wiersze tabela bazowa, używane do konstruowania bieżącego wiersza w kursor.Są to tak zwane pozycjonowane aktualizacji.
Aktualizacje pozycjonowane są wykonywane połączenia, która otworzyła kursor.Pozwala na współużytkowanie tej samej przestrzeni transakcji jako kursor zmiany danych i zapobiega aktualizacji blokowana przez blokady przechowywane przez kursor.
Istnieją dwie metody aktualizowaniu pozycjonowane kursor:
The Transact-SQL WHERE CURRENT OF klauzula on an UPDATE or DELETE instrukcja.
Interfejs API bazy danych rozmieszczone funkcja aktualizacji lub metoda, na przykład ODBC SQLSetPos funkcja.
Wykonywanie ustawione aktualizacje z języka Transact-SQL
The Transact-SQL WHERE CURRENT OF klauzula is typically used in Transact-SQL stored procedures, triggers, and scripts when modifications need to be made based on specific rows in a kursor. procedura przechowywana, wyzwalacza lub skryptów będzie:
DECLARE i otwórz kursor.
Umożliwia uzyskiwanie umieszczone na wiersz w kursor instrukcje pobrania.
wykonać instrukcja UPDATE lub DELETE przy użyciu klauzula WHERE CURRENT OF.Użycie cursor_name dla instrukcja DECLARE jako cursor_name w klauzula WHERE CURRENT OF.
Wykonywanie ustawione aktualizacje z interfejsów API
Kursory utworzonych za pomocą funkcji baz danych OLE i modelu ADO i metody nie są używane w klauzulach WHERE CURRENT Z faktu, że nie ma nazwy.ODBC, obsługuje jednak pobieranie nazwy kursor serwera interfejsu API z SQLGetCursorName funkcja.Po ustawiania atrybutów kursor, a następnie otwierając kursor wykonując Transact-SQL Instrukcja użytkowania SQLGetCursorName funkcja, aby uzyskać nazwę kursora.Po pozycjonowania w kursor, należy wykonać instrukcja UPDATE lub DELETE z klauzula WHERE CURRENT OF odwoływania się do nazwy zwróconej przez SQLGetCursorName.Jednak ta metoda nie jest zalecane.Zamiast tego lepiej jest używać funkcji aktualizacja pozycjonowana w interfejsu API ODBC.
Baza danych interfejsów API obsługuje dwie różne metody do wykonywania operacji pozycjonowane na kursory serwera interfejsu API.ODBC obsługuje jeden model, OLE DB i obiektów ADO drugiej.
W ODBC powiązania kolumn w kursor do zmiennych program, a następnie umieść na określonego wiersza w kursorze.Jeśli dokonywana aktualizacja pozycjonowana, zmienić wartości danych w programie zmiennych do nowych wartości.Wywołanie SQLSetPos funkcja do wykonania tej operacji pozycjonowane.
Tej funkcji są następujące opcje:
SQLSetPos(SQL_POSITION)
ODBC, umieszczenie kursor ODBC dla określonego wiersza w bieżącym zestawie zestaw wierszy.SQLSetPos(SQL_REFRESH)
Odświeżanie program zmiennych związany z kolumn zestaw wyników z wartościami w wierszu kursor jest aktualnie ustawiony.SQLSetPos(SQL_UPDATE)
Aktualizuje wartości przechowywane w zmiennych program związany z bieżącego wiersza w kursor zestaw wyników kolumn.SQLSetPos(SQL_DELETE)
Usuwa bieżący wiersz kursor.
OLE DB i obiektów ADO do obsługi pozycjonowane aktualizacji za pomocą innego modelu.
W OLE DB, jeśli umieszczona na wiersz w zestawie zestaw wierszy, zadzwoń IRowsetChange::SetData or IRowsetChange::DeleteRows metody do przeprowadzania aktualizacji pozycjonowane.Jeśli obsługuje dostawca OLE DB IRowsetUpdate::Update, zmiany wprowadzone w IRowsetChange metod są buforowane, dopóki nie zostanie wywołana IRowsetUpdate::Update.Jeśli nie obsługuje dostawca OLE DB IRowsetUpdate::Update, zmiany wprowadzone w IRowsetChange metod są wykonywane natychmiast.
W modelu ADO, jeśli umieszczona na wiersz w zestawie rekordów, zadzwoń Zestaw rekordów obiekt Aktualizacja or Usuwanie metody do przeprowadzania aktualizacji pozycjonowane.Jeśli obsługuje dostawca OLE DB IRowsetUpdate::Update, zmiany wprowadzone w Zestaw rekordów obiekt Aktualizacja or Usuwanie metod są buforowane, dopóki nie zostanie wywołana Zestaw rekordów obiekt UpdateBatch metoda.Jeśli nie obsługuje dostawca OLE DB IRowsetUpdate::Update, zmiany wprowadzone w Zestaw rekordów obiekt Aktualizacja or Usuwanie metod są wykonywane natychmiast.