2009-02-19 17 views
11

Mam procedura składowana zwracająca identyfikator, nazwę, opisy i nie pobiera parametrów wejściowych. Jednak interesuje mnie, ile wyników dostaję.Zliczanie wyników procedury przechowywanej

spodziewałem się czegoś podobnego do tego dzieła:

SELECT COUNT(*) FROM EXEC MyStoredProcedure 

Ale pojawia się następujący błąd w SQLSERVER Managment Studio: Niepoprawna składnia w pobliżu słowo kluczowe 'exec'. Możesz pokazać mi mały przykład kodu, jak mogę to zrobić?

Odpowiedz

18

To nie zadziała. Mogę zaproponować:

exec MyStoredProcedure 
select @@rowcount 

Ewentualnie można wrócić liczbę jako parametr wyjściowy

+0

co jeśli masz ustawione NOCOUNT się na? czy to nadal będzie działać? – user29964

+1

sorry my bad: http://msdn.microsoft.com/en-us/library/ms189837.aspx. @@ ROWCOUNT działa – user29964

+0

Właśnie uratowałeś mnie kilka godzin. Dzięki! –

-3

Napisz nową procedurę składowaną, która się liczy.

3

Musisz umieścić logikę w przechowywanej proc i zwrócić liczyć z przechowywanych proc. Robisz to za pomocą zmiennej @@ ROWCOUNT natychmiast po zapytaniu. To jakoś zadziała w MS SQL Servet przynajmniej.

Przechowywane Proc:

CREATE PROC MyPROC 
AS 
DECLARE @MyCount int 

... 

SELECT * FROM MyTable WHERE ... 

SELECT @MyCount = @@ROWCOUNT 

... 

return @MyCOunt 

Kod telefoniczny:

DECLARE @MyCount int 

EXEC @MyCount = EXEC MyProc 
+0

OK to zadziała, ale możesz również użyć WYBIERZ LICZBĘ (*) Z tabeli. Myślę, że nadal chce swoich danych ... jeśli nie, powinien użyć COUNT ... – user29964

Powiązane problemy