Подсчет записей в SQL Server - PullRequest
4 голосов
/ 13 января 2010

Посмотрите на этот 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

Этот SP отлично работает и дает мне необходимый результат.

Мне нужно спросить, есть ли какой-нибудь кратчайший способ подсчета записей, полученных при выполнении этого SP. Например я пытаюсь вот так

select count(*) from sp_GetRecTitleVeh

Я знаю, что есть решение вроде -

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

Есть ли у вас какие-либо идеи, как я могу считать записи, полученные при выполнении SP.

Спасибо, что поделились своим драгоценным временем.

Ответы [ 3 ]

5 голосов
/ 13 января 2010

Try ...

EXEC sp_GetRecTitleVeh 
SELECT @@Rowcount 
1 голос
/ 13 января 2010

Я считаю, что @@rowcount является предпочтительным подходом.

Но для справки: если вы обрабатываете событие SqlCommand.StatementCompleted, вы можете получить сообщение DONE_IN_PROC, которое возвращается клиенту. Это включает в себя количество затронутых строк. Но вы не можете использовать SET NOCOUNT ON, если хотите получить DONE_IN_PROC, поэтому производительность будет немного снижена, если вы сделаете это.

1 голос
/ 13 января 2010

немедленно после вашего выбора выберите @@ rowcount. это даст вам количество затронутых строк.

также начните использовать правильный синтаксис соединения. старый синтаксис для левого ( =) и правого jons (= ) устарел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...