Dela via


SQLDescribeCol och SQLColAttribute

SQLDescribeCol och SQLColAttribute används för att hämta metadata för resultatuppsättningar. Skillnaden mellan dessa två funktioner är att SQLDescribeCol alltid returnerar samma fem informationsdelar (en kolumns namn, datatyp, precision, skala och nullabilitet), medan SQLColAttribute returnerar en enda information som begärts av programmet. SQLColAttribute kan dock returnera ett mycket rikare urval av metadata, inklusive en kolumns skiftlägeskänslighet, visningsstorlek, uppdatbarhet och sökbarhet.

Många program, särskilt de som bara visar data, kräver endast metadata som returneras av SQLDescribeCol. För dessa program går det snabbare att använda SQLDescribeCol än SQLColAttribute eftersom informationen returneras i ett enda anrop. Andra program, särskilt de som uppdaterar data, kräver ytterligare metadata som returneras av SQLColAttribute och använder därför båda funktionerna. Dessutom stöder SQLColAttribute drivrutinsspecifika metadata; för mer information, se Drivrutinsspecifika datatyper, beskrivningstyper, informationstyper, diagnostiktyper och attribut.

Ett program kan hämta metadata för resultatuppsättningar när som helst efter att en instruktion har förberetts eller körts och innan markören över resultatuppsättningen stängs. Mycket få program kräver metadata för resultatuppsättningar när instruktionen har förberetts och innan den körs. Om möjligt bör program vänta med att hämta metadata tills instruktionen har körts, eftersom vissa datakällor inte kan returnera metadata för förberedda instruktioner och det ofta är en långsam process att emulera den här funktionen i drivrutinen. Drivrutinen kan till exempel generera en nollradsresultatuppsättning genom att ersätta WHERE-satsen i en SELECT-instruktion med satsen WHERE 1 = 2 och köra den resulterande instruktionen.

Metadata är ofta dyra att hämta från datakällan. På grund av detta bör drivrutiner cachea metadata som de hämtar från servern och behålla dem så länge som markören över resultatuppsättningen är öppen. Dessutom bör program endast begära de metadata som de absolut behöver.