Bearbetning av resultat (ODBC)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Efter att en applikation skickat in en SQL-sats returnerar SQL Server all resulterande data som en eller flera resultatuppsättningar. En resultatmängd är en mängd rader och kolumner som matchar kriterierna för frågan. SELECT-satser, katalogfunktioner och vissa lagrade procedurer ger en resultatuppsättning som görs tillgänglig för en applikation i tabellform. Om den exekverade SQL-satsen är en lagrad procedur, en batch som innehåller flera kommandon, eller en SELECT-sats med nyckelord, kommer det att finnas flera resultatuppsättningar att bearbeta.

ODBC-katalogfunktioner kan också hämta data. Till exempel hämtar SQLColumns data om kolumner i datakällan. Dessa resultatmängder kan innehålla noll eller fler rader.

Andra SQL-satser, såsom GRANT eller REVOKE, returnerar inte resultatuppsättningar. För dessa satser är returkoden från SQLExecute eller SQLExecDirect vanligtvis den enda indikationen på att satsen var framgångsrik.

Varje INSERT, UPDATE, och-sats DELETE returnerar en resultatmängd som endast innehåller antalet rader som påverkas av modifieringen. Denna räkning görs tillgänglig när applikationen anropar SQLRowCount. ODBC 3. x applikationer måste antingen anropa SQLRowCount för att hämta resultatuppsättningen eller SQLMoreResults för att avbryta den. När en applikation kör en batch- eller lagrad procedur som innehåller flera INSERT, UPDATE, eller DELETE satser, måste resultatuppsättningen från varje modifieringssats bearbetas med SQLRowCount eller avbrytas med SQLMoreResults. Dessa räkningar kan avbrytas genom att inkludera ett SET NOCOUNT ON-uttalande i batchen eller lagrad procedur.

Transact-SQL inkluderar uttalandet SET NOCOUNT . När NOCOUNT alternativet är aktiverat returnerar inte SQL Server antalet rader som påverkas av en sats och SQLRowCount returnerar 0. Den SQL Server Native Client ODBC-drivrutinsversionen introducerar ett drivrutinsspecifikt SQLGetStmtAttr-alternativ, SQL_SOPT_SS_NOCOUNT_STATUS, för att rapportera om alternativet NOCOUNT är på eller av. Varje gång SQLRowCount returnerar 0 bör applikationen testa SQL_SOPT_SS_NOCOUNT_STATUS. Om SQL_NC_ON returneras indikerar värdet 0 från SQLRowCount endast att SQL Server inte har returnerat någon radräkning. Om SQL_NC_OFF returneras betyder det att NOCOUNT är fel och värdet 0 från SQLRowCount indikerar att satsen inte påverkade några rader. Applikationer bör inte visa värdet av SQLRowCount när SQL_SOPT_SS_NOCOUNT_STATUS är SQL_NC_OFF. Stora batcher eller lagrade procedurer kan innehålla flera SET NOCOUNT satser så programmerare kan inte anta SQL_SOPT_SS_NOCOUNT_STATUS förblir konstant. Alternativet bör testas varje gång SQLRowCount returnerar 0.

Flera andra Transact-SQL-satser returnerar sina data i meddelanden istället för i resultatuppsättningar. När den SQL Server Native Client ODBC-drivrutinen tar emot dessa meddelanden returnerar den SQL_SUCCESS_WITH_INFO för att meddela applikationen att informationsmeddelanden är tillgängliga. Applikationen kan sedan anropa SQLGetDiagRec för att hämta dessa meddelanden. De Transact-SQL påståenden som fungerar på detta sätt är:

  • DBCC

  • SETSHOWPLAN (tillgänglig med tidigare versioner av SQL Server)

  • SET STATISTICS

  • PRINT

  • RAISERROR

Den SQL Server Native Client ODBC-drivrutinen returnerar SQL_ERROR på ett RAISFEL med allvarlighetsgrad 11 eller högre. Om allvaret i RAISFELET är 19 eller högre bryts även anslutningen.

För att bearbeta resultatuppsättningarna från en SQL-sats gör applikationen:

  • Bestämmer egenskaperna hos resultatmängden.

  • Binder kolumnerna till programvariabler.

  • Hämtar ett enda värde, en hel rad med värden, eller flera rader med värden.

  • Testar om det finns fler resultatuppsättningar, och i så fall återgår det till att bestämma egenskaperna hos den nya resultatuppsättningen.

Processen att hämta rader från datakällan och returnera dem till applikationen kallas hämtande.

I det här avsnittet

Se även

SQL Server Native Client (ODBC)
Bearbetning av instruktioner för resultat (ODBC)