Tilføj COUNT(*)
i SQL Server 2008 og nyere OVER ()
som et af kolonnenavnene i din forespørgsel, og det vil blive udfyldt med det samlede antal returnerede rækker.
Det gentages i hver enkelt række, men værdien er i det mindste tilgængelig.
Grunden til, at mange andre løsninger ikke virker, er, at for meget store resultatsæt, vil du først kende totalen efter gentagelse af alle rækker, hvilket ikke er praktisk i mange tilfælde (især sekventielle behandlingsløsninger). Denne teknik giver dig det samlede antal efter at have kaldt den første IDataReader.Read()
, for eksempel.
select COUNT(*) OVER () as Total_Rows, ... from ...