Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Important
Tato funkce se odebere v budoucí verzi Windows. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají. Microsoft doporučuje používat funkci kurzoru ovladače.
Knihovna kurzorů podporuje umístěné příkazy update a delete tím, že v takových příkazech nahrazuje klauzuli WHERE CURRENT OF klauzulí WHERE , která vyjmenovává hodnoty uložené v cache pro každý vázaný sloupec. Knihovna kurzorů předává nově vytvořené UPDATE příkazy a DELETE ovladači k vykonání. Pro dotazníky s umístěnými aktualizacemi pak knihovna kurzorů aktualizuje svou cache z hodnot v bufferech řádků a nastaví odpovídající hodnotu v poli stavů řádků na SQL_ROW_UPDATED. Pro příkazy pro umístění delete nastaví odpovídající hodnotu v řádkovém stavovém poli na SQL_ROW_DELETED.
Caution
Klauzule WHERE vytvořená kurzorovou knihovnou pro identifikaci aktuálního řádku může selhat v identifikaci žádných řádků, jiného řádku nebo více než jednoho řádku. Pro více informací viz Konstruování vyhledávaných tvrzení, později v této příloze.
Pozice příkazů aktualizace a smazání podléhají následujícím omezením:
Příkazy pro pozicování update a delete lze použít pouze v následujících případech: když příkaz SELECT generuje výslednou sadu; když příkaz SELECT neobsahoval join, klauzuli UNION nebo klauzuli GROUP BY ; a když žádné sloupce, které používaly alias nebo výraz v seznamu výběru, nebyly vázány SQLBindCol.
Pokud aplikace připraví příkaz pro umístění aktualizace nebo odstranění, musí tak učinit poté, co zavolá SQLFetch nebo SQLFetchScroll. Ačkoli knihovna kurzorů odešle příkaz ovladači k přípravě, příkaz ukončí a vykoná ho přímo, když aplikace volá SQLExecute.
Pokud ovladač podporuje pouze jeden aktivní příkaz, knihovna kurzoru načte zbytek výsledkové sady a poté znovu načte aktuální sadu řádků ze své cache před vykonáním příkazu pro aktualizaci nebo odstranění pozice. Pokud aplikace poté zavolá funkci, která vrací metadata v sadě výsledků (například SQLNumResultCols nebo SQLDescribeCol), knihovna kurzoru vrátí chybu.
Pokud je umístěný příkaz update nebo delete proveden na sloupci tabulky, která obsahuje sloupec časového razítka, jenž se automaticky aktualizuje při každé aktualizaci, všechny následné příkazy pro aktualizaci nebo odstranění s pozicemi selžou, pokud je sloupec časového razítka omezen. K tomu dochází proto, že vyhledáný příkaz update nebo delete, který knihovna kurzoru vytvoří, neidentifikuje přesně řádek k aktualizaci. Hodnota ve vyhledávaném příkazu pro sloupec časového razítka nebude odpovídat automaticky aktualizované hodnotě sloupce časového razítka.