Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Ett resultat är något som returneras av datakällan när en instruktion har körts. ODBC har två typer av resultat: resultatuppsättningar och radantal. Radantal är antalet rader som påverkas av en uppdaterings-, borttagnings- eller insert-instruktion. Batchar, som beskrivs i Batchar med SQL-instruktioner, kan generera flera resultat.
I följande tabell visas de SQLGetInfo-alternativ som ett program använder för att avgöra om en datakälla returnerar flera resultat för varje typ av batch. I synnerhet kan en datakälla returnera ett enda radantal för hela batchen med instruktioner eller enskilda radantal för varje instruktion i batchen. Om en resultatuppsättningsgenererande instruktion körs med en matris med parametrar kan datakällan returnera en enda resultatuppsättning för alla uppsättningar parametrar eller enskilda resultatuppsättningar för varje uppsättning parametrar.
| Batchtyp | Antal rader | Resultatuppsättningar |
|---|---|---|
| Explicit batch | SQL_BATCH_ROW_COUNT[a] | --[b] |
| Procedure | SQL_BATCH_ROW_COUNT[a] | --[b] |
| Matriser med parametrar | SQL_PARAM_ARRAYS_ROW_COUNTS | SQL_PARAM_ARRAYS_SELECTS |
[a] Radantalgenererande instruktioner i en batch kan stödjas, men returen av radantalen stöds inte. Alternativet SQL_BATCH_SUPPORT i SQLGetInfo anger om radantalgenererande instruktioner tillåts i batchar. alternativet SQL_BATCH_ROW_COUNTS anger om dessa radantal returneras till programmet.
[b] Explicita batchar och procedurer returnerar alltid flera resultatuppsättningar när de innehåller flera resultatuppsättningsgenererande instruktioner.
Anmärkning
Alternativet SQL_MULT_RESULT_SETS som introducerades i ODBC 1.0 innehåller endast allmän information om huruvida flera resultatuppsättningar kan returneras. I synnerhet är det inställt på "Y" om SQL_BS_SELECT_EXPLICIT eller SQL_BS_SELECT_PROC bitar returneras för SQL_BATCH_SUPPORT eller om SQL_PAS_BATCH returneras för SQL_PARAM_ARRAYS_SELECT.
För att bearbeta flera resultat anropar ett program SQLMoreResults. Den här funktionen tar bort det aktuella resultatet och gör nästa resultat tillgängligt. Den returnerar SQL_NO_DATA när inga fler resultat är tillgängliga. Anta, till exempel, att följande uttalanden körs som en batch:
SELECT * FROM Parts WHERE Price > 100.00;
UPDATE Parts SET Price = 0.9 * Price WHERE Price > 100.00
När dessa instruktioner har körts hämtar programmet rader från resultatuppsättningen som skapats av SELECT-instruktionen . När det är klart med att hämta rader anropas SQLMoreResults för att göra antalet delar som har omprissatts tillgängligt. Vid behov kastar SQLMoreResults bort oinhämtade rader och stänger markören. Programmet anropar sedan SQLRowCount för att fastställa hur många delar som har omricerats av UPDATE-instruktionen .
Det är drivrutinsspecifikt om hela batch-instruktionen körs innan några resultat är tillgängliga. I vissa implementeringar är detta fallet. i andra utlöser anrop av SQLMoreResults körningen av nästa -instruktion i batchen.
Om någon av -uttrycken i en batch misslyckas returnerar SQLMoreResults antingen SQL_ERROR eller SQL_SUCCESS_WITH_INFO. Om batchen avbröts när -instruktionen misslyckades eller om den misslyckade -instruktionen var den sista instruktionen i batchen, returnerar SQLMoreResults SQL_ERROR. Om batchen inte avbröts när instruktionen misslyckades och den misslyckade instruktionen inte var den sista instruktionen i batchen, returnerar SQLMoreResults SQL_SUCCESS_WITH_INFO. SQL_SUCCESS_WITH_INFO anger att minst en resultatuppsättning eller antal genererades och att batchen inte avbröts.