Verwerkingsresultaten (ODBC)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Nadat een applicatie een SQL-instructie heeft ingediend, retourneert SQL Server alle resulterende gegevens als één of meer resultaatsets. Een resultaatset is een verzameling rijen en kolommen die overeenkomen met de criteria van de zoekopdracht. SELECT-instructies, catalogusfuncties en enkele opgeslagen procedures produceren een resultaatset die in tabelvorm beschikbaar wordt gesteld aan een applicatie. Als de uitgevoerde SQL-instructie een opgeslagen procedure is, een batch met meerdere commando's, of een SELECT-instructie met trefwoorden, zijn er meerdere resultaatsets om te verwerken.

ODBC-catalogusfuncties kunnen ook gegevens ophalen. Bijvoorbeeld, SQLColumns haalt gegevens op over kolommen in de databron. Deze resultaatsets kunnen nul of meer rijen bevatten.

Andere SQL-instructies, zoals GRANT of REVOKE, geven geen resultaatsets terug. Voor deze statements is de retourcode van SQLExecute of SQLExecDirect meestal de enige aanwijzing dat de instructie succesvol was.

Elke INSERT, , and-instructie UPDATEDELETE geeft een resultaatset terug die alleen het aantal rijen bevat dat door de wijziging is beïnvloed. Deze telling wordt beschikbaar gemaakt wanneer applicatie SQLRowCount aanroept. ODBC 3. x-applicaties moeten ofwel SQLRowCount aanroepen om de resultaatset op te halen, of SQLMoreResults om deze te annuleren. Wanneer een applicatie een batch- of opgeslagen procedure uitvoert met meerdere INSERT, UPDATE, of DELETE statements, moet de resultaatset van elke wijzigingsinstructie worden verwerkt met SQLRowCount of worden geannuleerd met SQLMoreResults. Deze tellingen kunnen worden geannuleerd door een SET NOCOUNT ON-instructie op te nemen in de batch of opgeslagen procedure.

Transact-SQL bevat de SET NOCOUNT verklaring. Wanneer de NOCOUNT optie is ingeschakeld, geeft SQL Server niet de tellingen van de door een instructie beïnvloede rijen terug en geeft SQLRowCount 0 terug. De SQL Server Native Client ODBC-driverversie introduceert een driver-specifieke SQLGetStmtAttr-optie, SQL_SOPT_SS_NOCOUNT_STATUS, om te rapporteren of de NOCOUNT optie aan of uit is. Telkens wanneer SQLRowCount 0 teruggeeft, zou de applicatie SQL_SOPT_SS_NOCOUNT_STATUS moeten testen. Als SQL_NC_ON wordt teruggegeven, geeft de waarde 0 van SQLRowCount alleen aan dat SQL Server geen rijtelling heeft teruggegeven. Als SQL_NC_OFF wordt teruggegeven, betekent dit dat NOCOUNT uit is en de waarde 0 van SQLRowCount aangeeft dat de instructie geen enkele rij heeft beïnvloed. Applicaties mogen de waarde van SQLRowCount niet weergeven wanneer SQL_SOPT_SS_NOCOUNT_STATUS SQL_NC_OFF. Grote batches of opgeslagen procedures kunnen meerdere SET NOCOUNT statements bevatten, zodat programmeurs niet kunnen aannemen SQL_SOPT_SS_NOCOUNT_STATUS constant blijft. De optie moet elke keer getest worden wanneer SQLRowCount 0 teruggeeft.

Verschillende andere Transact-SQL-statements geven hun gegevens terug in berichten in plaats van in resultaatsets. Wanneer de SQL Server Native Client ODBC-driver deze berichten ontvangt, keert deze SQL_SUCCESS_WITH_INFO terug om de applicatie te laten weten dat informatieve berichten beschikbaar zijn. De applicatie kan vervolgens SQLGetDiagRec aanroepen om deze berichten op te halen. De Transact-SQL uitspraken die op deze manier werken zijn:

  • DBCC

  • SETSHOWPLAN (beschikbaar met eerdere versies van SQL Server)

  • SET STATISTICS

  • PRINT

  • RAISERROR

De SQL Server Native Client ODBC-driver geeft SQL_ERROR terug op een RAISERROR met een ernst van 11 of hoger. Als de ernst van de RAISFOUT 19 of hoger is, wordt de verbinding ook verbroken.

Om de resultaatsets van een SQL-instructie te verwerken, volgt de applicatie:

  • Bepaalt de kenmerken van de resultaatset.

  • Bindt de kolommen aan programmavariabelen.

  • Haalt één enkele waarde op, een hele rij met waarden, of meerdere rijen met waarden.

  • Tests om te zien of er meer resultaatsets zijn, en zo ja, gaat het terug naar het bepalen van de kenmerken van de nieuwe resultaatset.

Het proces van het ophalen van rijen uit de databron en het teruggeven aan de applicatie wordt ophalen genoemd.

In deze sectie

Zie ook

SQL Server Native Client (ODBC)
Instructies voor het verwerken van resultaten (ODBC)