Megosztás:


Több találat

Az eredmény az adatforrás által egy utasítás végrehajtása után visszaadott eredmény. Az ODBC kétféle eredményt tartalmaz: eredményhalmazokat és sorszámokat. A sorszám azoknak a soroknak a száma, amelyeket egy frissítési, törlési vagy beszúrási utasítás érint. Az SQL-utasítások kötegeiben leírt kötegek több eredményt is létrehozhatnak.

Az alábbi táblázat felsorolja azokat az SQLGetInfo-beállításokat , amelyek alapján az alkalmazás meghatározza, hogy egy adatforrás több eredményt ad-e vissza minden egyes kötegtípushoz. Az adatforrások például egyetlen sorszámot adhatnak vissza a teljes utasításköteghez, illetve a kötegben lévő egyes utasításokhoz tartozó egyes sorok számát. Paraméterek tömbjével végrehajtott eredményhalmaz-generáló utasítás esetén az adatforrás egyetlen eredményhalmazt adhat vissza minden paraméterkészlethez vagy egyedi eredményhalmazhoz minden paraméterkészlethez.

Köteg típusa Sorok száma Eredményhalmazok
Explicit köteg SQL_BATCH_ROW_COUNT[a] --[b]
Procedure SQL_BATCH_ROW_COUNT[a] --[b]
Paraméterek tömbjei SQL_PARAM_ARRAYS_ROW_COUNTS SQL_PARAM_ARRAYS_SELECTS

[a] Egy köteg sorszám-generáló utasításai támogatottak lehetnek, de a sorszámok visszaadása nem támogatott. Az SQLGetInfo SQL_BATCH_SUPPORT beállítása azt jelzi, hogy a sorszám-generáló utasítások engedélyezve vannak-e a kötegekben; a SQL_BATCH_ROW_COUNTS beállítás azt jelzi, hogy a rendszer visszaadja-e ezeket a sorszámokat az alkalmazásnak.

[b] Az explicit kötegek és eljárások mindig több eredményhalmazt adnak vissza, ha több eredményhalmaz-generáló utasítást tartalmaznak.

Megjegyzés:

Az ODBC 1.0-ban bevezetett SQL_MULT_RESULT_SETS beállítás csak általános információkat tartalmaz arról, hogy több eredményhalmaz is visszaadható-e. Különösen akkor állítják "Y" értékre, ha az SQL_BS_SELECT_EXPLICIT vagy SQL_BS_SELECT_PROC biteket adja vissza az SQL_BATCH_SUPPORT, vagy ha az SQL_PARAM_ARRAYS_SELECT az SQL_PAS_BATCH-ot adja vissza.

Több eredmény feldolgozásához egy alkalmazás SQLMoreResults-t hív meg. Ez a függvény elveti az aktuális eredményt, és elérhetővé teszi a következő eredményt. Az SQL_NO_DATA értéket adja vissza, ha nincs több eredmény. Tegyük fel például, hogy a következő utasítások végrehajtása kötegként történik:

SELECT * FROM Parts WHERE Price > 100.00;  
UPDATE Parts SET Price = 0.9 * Price WHERE Price > 100.00  

Az utasítások végrehajtása után az alkalmazás sorokat kér le a SELECT utasítás által létrehozott eredménykészletből. Amikor végzett a sorok beolvasásával, meghívja az SQLMoreResultst , hogy elérhetővé tegye az átárazott részek számát. Ha szükséges, az SQLMoreResults elveti a nem beolvasott sorokat, és bezárja a kurzort. Az alkalmazás ezután meghívja az SQLRowCount-ot annak megállapítására, hogy az UPDATE utasítás hány részre lett átárazva.

Az illesztőprogramtól függ, hogy végrehajtódik-e a teljes kötegelt utasítás, mielőtt bármilyen eredmény elérhető lenne. Egyes implementációk esetében ez a helyzet; másokban az SQLMoreResults meghívása elindítja a következő utasítás végrehajtását a kötegben.

Ha egy köteg egyik utasítása meghiúsul, az SQLMoreResults SQL_ERROR vagy SQL_SUCCESS_WITH_INFO ad vissza. Ha a köteg megszakadt, amikor az utasítás sikertelen volt, vagy a sikertelen utasítás volt a köteg utolsó utasítása, az SQLMoreResults SQL_ERROR fog visszaadni. Ha a köteg nem lett megszakítva, amikor az utasítás meghiúsult, és a sikertelen utasítás nem az utolsó utasítás volt a kötegben, az SQLMoreResults SQL_SUCCESS_WITH_INFO fog visszaadni. SQL_SUCCESS_WITH_INFO azt jelzi, hogy legalább egy eredményhalmaz vagy -szám létrejött, és hogy a köteg nem lett megszakítva.