Sdílet prostřednictvím


SQLDescribeCol a SQLColAttribute

SQLDescribeCol a SQLColAttribute se používají k načtení metadat sady výsledků. Rozdíl mezi těmito dvěma funkcemi spočívá v tom, že funkce SQLDescribeCol vždy vrací stejných pět informací (název sloupce, datový typ, přesnost, měřítko a nullability), zatímco FUNKCE SQLColAttribute vrátí jednu část informací požadovanou aplikací. SQLColAttribute ale může vrátit mnohem bohatší výběr metadat, včetně citlivosti na malá a velká písmena sloupce, velikosti zobrazení, aktualizovatelnosti a vyhledávání.

Mnoho aplikací, zejména těch, které zobrazují pouze data, vyžadují pouze metadata vrácená sqlDescribeCol. U těchto aplikací je rychlejší používat SQLDescribeCol než SQLColAttribute , protože informace jsou vráceny v jednom volání. Jiné aplikace, zejména ty, které aktualizují data, vyžadují další metadata vrácená funkcí SQLColAttribute , a proto používají obě funkce. Kromě toho SQLColAttribute podporuje metadata specifická pro ovladače; Další informace naleznete v části datových typů specifických pro ovladače, typů popisovačů, informačních typů, diagnostických typů a atributů.

Aplikace může kdykoli načíst metadata sady výsledků po přípravě nebo spuštění příkazu a před zavřeným kurzorem na sadu výsledků. Velmi málo aplikací vyžaduje metadata sady výsledků po dokončení příkazu a před jeho spuštěním. Pokud je to možné, aplikace by měly čekat na načtení metadat až po provedení příkazu, protože některé zdroje dat nemohou vracet metadata pro připravené příkazy a emulace této funkce v ovladači je často pomalý proces. Ovladač může například vygenerovat sadu výsledků nulového řádku nahrazením klauzule WHERE příkazu SELECT klauzulí WHERE 1 = 2 a spuštěním výsledného příkazu.

Načítání metadat ze zdroje dat je často nákladné. Z tohoto důvodu by ovladače měly ukládat všechna metadata, která načítají ze serveru, a uchovávat je tak dlouho, dokud je otevřen kurzor na sadu výsledků. Aplikace by také měly požadovat pouze metadata, která naprosto potřebují.