开发者

Counting records in SQL Server

Take a look at this SP.

ALTER PROCEDURE [dbo].[sp_GetRecTitleVeh] 

AS
BEGIN
select 
    a.StockNo, c.ClaimNo,
    v.VIN, v.[Year],v.Make, v.Model,
    c.DOAssign, t.DOLoss, t.RecTitleDate
From 
    dbo.Assignments a,
    dbo.Assignment_ClaimInfo c,
    dbo.Assignment_TitleInfo t,
    dbo.Assignment_VehicleInfo v
Where 
    a.AssignmentID= c.AssignmentID and
    c.AssignmentID= t.AssignmentID and
    t.AssignmentID= v.AssignmentID and
    t.RecTitleDate is not null and
    c.InsuranceComp = 'XYZ' and
    a.StockNo not in (select StockNo from dbo.Invoice where InvoiceType = 'Payment Invoice') 
order by t.RecTitleDate
END

This SP works fine 开发者_运维知识库and gives me required result.

What i need is to ask that is there any shortest way to count records obtained by executing this SP. For ex. i am trying like this

select count(*) from sp_GetRecTitleVeh

I know that there is a solution like -

ALTER PROCEDURE [dbo].[sp_CountRecTitleVeh] 

AS
BEGIN
select 
    count(a.StockNo)
From 
    dbo.Assignments a,
    dbo.Assignment_ClaimInfo c,
    dbo.Assignment_TitleInfo t,
    dbo.Assignment_VehicleInfo v
Where 
    a.AssignmentID= c.AssignmentID and
    c.AssignmentID= t.AssignmentID and
    t.AssignmentID= v.AssignmentID and
    t.RecTitleDate is not null and
    c.InsuranceComp = 'XYZ' and
    a.StockNo not in (select StockNo from dbo.Invoice where InvoiceType = 'Payment Invoice') 
order by t.RecTitleDate
END

Do you have any idea how could i count records got by executing SP.

Thanks for sharing your valuable time.


Try...

EXEC sp_GetRecTitleVeh 
SELECT @@Rowcount 


immediately after your select do select @@rowcount. this will give you the number of affected rows.

also start using the proper join syntax. the old syntax for left (=) and right jons (=) is deprecated.


I believe that @@rowcount is the preferred approach.

But, just for the record, if you handle the SqlCommand.StatementCompleted event, you can get the DONE_IN_PROC message which is returned to the client. That includes the number of rows affected. But you can't use SET NOCOUNT ON if you want to get DONE_IN_PROC, so performance will be hindered a bit if you do this.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜