Megosztás:


Kötési eredményhalmaz oszlopai

Az alkalmazások tetszőleges számú oszlopot köthetnek az eredményhalmazból, beleértve azt az esetet is, amikor egyáltalán nem kötnek oszlopokat. Egy adatsor beolvasásakor az illesztő visszaadja a kötött oszlopok adatait az alkalmazásnak. Az alkalmazástól függ, hogy az alkalmazás az eredményhalmaz összes oszlopát köti-e össze. A jelentéseket létrehozó alkalmazások például általában rögzített formátumúak; az ilyen alkalmazások létrehoznak egy eredményhalmazt, amely tartalmazza a jelentésben használt összes oszlopot, majd köti össze és kéri le az összes oszlop adatait. Az adatokkal teli képernyőket megjelenítő alkalmazások néha lehetővé teszik a felhasználó számára, hogy eldöntse, mely oszlopok jelenjenek meg; az ilyen alkalmazások létrehoznak egy eredményhalmazt, amely tartalmazza a felhasználó által esetleg kívánt összes oszlopot, de csak a felhasználó által kiválasztott oszlopokhoz köti és kéri le az adatokat.

Az adatok lekérhetők a kötetlen oszlopokból az SQLGetData meghívásával. Ezt gyakran nevezik hosszú adatok lekérésének, amelyek gyakran túllépik az egyetlen puffer hosszát, és részekben kell lekérni őket.

Az oszlopok bármikor hozzákapcsolhatók, még a sorok beolvasása után is. Az új kötések azonban csak a soron következő beolvasáskor lépnek érvénybe; a program nem alkalmazza őket a már lehívott sorokból származó adatokra.

A változó mindaddig egy oszlophoz marad kötve, amíg egy másik változót nem kötnek az oszlophoz, amíg az oszlopot nem kötik ki az SQLBindCol nulla mutatóval történő meghívásával, amíg az összes oszlop nincs kibontva az SQLFreeStmt SQL_UNBIND opcióval való hívásával, vagy amíg az utasítást fel nem szabadítják. Ezért az alkalmazásnak meg kell győződnie arról, hogy az összes kötött változó érvényes marad mindaddig, amíg meg vannak kötve. További információ: Pufferek kiosztása és felszabadítása.

Mivel az oszlopkötések csak az utasításstruktúrához társított információk, bármilyen sorrendben beállíthatók. Ők is függetlenek az eredményhalmaztól. Tegyük fel például, hogy egy alkalmazás a következő SQL-utasítással létrehozott eredményhalmaz oszlopait köti össze:

SELECT * FROM Orders  

Ha az alkalmazás ezután végrehajtja az SQL-utasítást

SELECT * FROM Lines  

ugyanazon az utasításkezelőn az első eredményhalmaz oszlopkötései továbbra is érvényben vannak, mivel ezek az utasításstruktúrában tárolt kötések. A legtöbb esetben ez rossz programozási gyakorlat, ezért el kell kerülni. Ehelyett az alkalmazásnak meg kell hívnia az SQLFreeStmt-et a SQL_UNBIND lehetőséggel az összes régi oszlop kötésének feloldásához, majd az újak kötéséhez.