Delen via


Meerdere resultaten

Een resultaat is iets dat door de gegevensbron wordt geretourneerd nadat een instructie is uitgevoerd. ODBC heeft twee typen resultaten: resultatensets en aantal rijen. Het aantal rijen is het aantal rijen dat wordt beïnvloed door een update-, verwijder- of invoeginstructie. Batches, beschreven in Batches van SQL-instructies, kunnen meerdere resultaten genereren.

De volgende tabel bevat de SQLGetInfo-opties die een toepassing gebruikt om te bepalen of een gegevensbron meerdere resultaten retourneert voor elk ander type batch. Specifiek kan een gegevensbron een enkel totaal rijaantal retourneren voor de hele batch statements, of individuele rijaantallen voor elke statement in de batch. In het geval van een instructie voor het genereren van een resultatenset die wordt uitgevoerd met een matrix met parameters, kan de gegevensbron één resultatenset retourneren voor alle sets parameters of afzonderlijke resultatensets voor elke set parameters.

Batchtype Aantal rijen Resultatensets
Expliciete batch SQL_BATCH_ROW_COUNT[a] --[b]
Procedure SQL_BATCH_ROW_COUNT[a] --[b]
Matrices van parameters SQL_PARAM_ARRAYS_ROW_COUNTS SQL_PARAM_ARRAYS_SELECTS

[a] Rijaantal-genererende instructies in een batch kunnen worden ondersteund, maar het teruggeven van de rijaantallen wordt niet ondersteund. De optie SQL_BATCH_SUPPORT in SQLGetInfo geeft aan of rijaantal-genererende instructies zijn toegestaan in batches; de optie SQL_BATCH_ROW_COUNTS geeft aan of deze rijen worden geretourneerd naar de toepassing.

[b] Expliciete batches en procedures retourneren altijd meerdere resultatensets wanneer ze meerdere instructies voor het genereren van resultatensets bevatten.

Opmerking

De SQL_MULT_RESULT_SETS optie die is geïntroduceerd in ODBC 1.0 bevat alleen algemene informatie over of meerdere resultatensets kunnen worden geretourneerd. Het is met name ingesteld op 'Y' als de SQL_BS_SELECT_EXPLICIT of SQL_BS_SELECT_PROC bits worden geretourneerd voor SQL_BATCH_SUPPORT of als SQL_PAS_BATCH wordt geretourneerd voor SQL_PARAM_ARRAYS_SELECT.

Een toepassing roept SQLMoreResults aan om meerdere resultaten te verwerken. Met deze functie wordt het huidige resultaat verwijderd en wordt het volgende resultaat beschikbaar gemaakt. Het retourneert SQL_NO_DATA wanneer er geen resultaten meer beschikbaar zijn. Stel dat de volgende opdrachten worden uitgevoerd als een batch:

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

Nadat deze instructies zijn uitgevoerd, haalt de toepassing rijen op uit de resultatenset die door de SELECT-instructie is gemaakt. Wanneer de rijen zijn opgehaald, wordt SQLMoreResults aangeroepen om het aantal onderdelen dat is geherwaardeerd beschikbaar te maken. Indien nodig worden door SQLMoreResults ongefetcheerde rijen verwijderd en wordt de cursor gesloten. De toepassing roept vervolgens SQLRowCount aan om te bepalen hoeveel onderdelen zijn repriced door de UPDATE-instructie .

Het is stuurprogrammaspecifiek of de volledige batchinstructie wordt uitgevoerd voordat er resultaten beschikbaar zijn. In sommige implementaties is dit het geval; in andere, aanroepen van SQLMoreResults activeert de uitvoering van de volgende instructie in de batch.

Als een van de instructies in een batch mislukt, retourneert SQLMoreResults SQL_ERROR of SQL_SUCCESS_WITH_INFO. Als de batch is afgebroken toen de instructie is mislukt of als de mislukte instructie de laatste instructie in de batch was, retourneert SQLMoreResults SQL_ERROR. Als de batch niet is afgebroken toen de instructie is mislukt en de mislukte instructie niet de laatste instructie in de batch was, retourneert SQLMoreResults SQL_SUCCESS_WITH_INFO. SQL_SUCCESS_WITH_INFO geeft aan dat ten minste één resultatenset of aantal is gegenereerd en dat de batch niet is afgebroken.