Köra positionerade instruktioner för uppdatering och borttagning

Important

Den här funktionen tas bort i en framtida version av Windows. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen. Microsoft rekommenderar att du använder drivrutinens markörfunktioner.

Efter att en applikation har hämtat ett datablock med SQLFetchScroll kan den uppdatera eller ta bort datan i blocket. För att utföra en positionerad uppdatering eller borttagning gör applikationen:

  1. Anropar SQLSetPos för att placera markören på raden som ska uppdateras eller tas bort.

  2. Konstruerar en positionerad uppdaterings- eller borttagningssats med följande syntax:

    UPDATE Tabellnamn

    SET Kolumnidentifierare= {uttryck | NULL}

    [,kolumnidentifierare]= {uttryck | NULL}]

    DÄR STRÖM AVmarkör-namn

    DELETE FRÅNtabellnamnVAR CURRENT AVmarkörnamn

    Det enklaste sättet att konstruera SET klausulen i en positionerad uppdateringssats är att använda parametermarkörer för varje kolumn som ska uppdateras och använda SQLBindParameter för att binda dessa till raduppsättningsbuffertarna för raden som ska uppdateras. I detta fall kommer C-datatypen för parametern att vara densamma som C-datatypen för raduppsättningsbufferten.

  3. Uppdaterar raduppsättningsbuffertarna för den aktuella raden om den kommer att köra en positionerad uppdateringssats. Efter att framgångsrikt ha kört en positionerad uppdateringssats kopierar markörbiblioteket värdena från varje kolumn i den aktuella raden till sin cache.

    Caution

    Om applikationen inte korrekt uppdaterar radsetsbuffertarna innan en positionerad uppdateringssats exekveras, kommer datan i cachen att vara felaktig efter att satsen exekverats.

  4. Utför positionerade uppdaterings- eller delete-satsen med en annan sats än den som är kopplad till markören.

    Caution

    WHERE-klausulen som konstrueras av markörbiblioteket för att identifiera den aktuella raden kan misslyckas med att identifiera några rader, identifiera en annan rad eller identifiera mer än en rad. För mer information, se Constructing Searched Statements.

Alla positionerade uppdaterings- och borttagningssatser kräver ett pekarnamn. För att ange markörens namn anropar en applikation SQLSetCursorName innan markören öppnas. För att använda markörnamnet som genereras av drivrutinen anropar ett program SQLGetCursorName efter att markören öppnats.

Efter att markörbiblioteket utfört en positionerad uppdaterings- eller borttagningssats, innehåller statusarrayen, raduppsättningsbuffertar och cache som underhålls av markörbiblioteket de värden som visas i följande tabell.

Påstående som används Värde i radstatusarray Värden i

Rowset-buffertar
Värden i

Cachebuffertar
Positioneringsuppdatering SQL_ROW_UPDATED Nya värderingar[1] Nya värderingar[1]
Positionerad borttagning SQL_ROW_DELETED Gamla värderingar Gamla värderingar

[1] Applikationen måste uppdatera värdena i raduppsättningsbuffertarna innan positioneringsuppdateringssatsen exekveras; Efter att positionerade uppdateringssatsen har exekverats kopierar markörbiblioteket värdena i raduppsättningsbuffertarna till sin cache.