Вы должны быть в состоянии использовать @@ROWCOUNT
, чтобы получить количество строк, затронутых последним оператором, который был выполнен.
См .: https://docs.microsoft.com/en-us/sql/t-sql/functions/rowcount-transact-sql?view=sql-server-ver15
На основе от вашего комментария, вот правка, содержащая пример, где оператор выбора по-прежнему является выводом хранимой процедуры. Вставка в таблицу журнала выполняется после оператора select, поэтому команда @@ROWCOUNT
будет по-прежнему работать, но в то же время будет предоставлять фактический результат запроса в качестве вывода.
DROP TABLE IF EXISTS ##LOG
CREATE TABLE ##Log
(
ProcName NVARCHAR(100)
,ExecutionTime DATETIME
,TotalRowsReturned INT
)
GO
CREATE PROCEDURE TestProc
AS
BEGIN
SET NOCOUNT ON
DECLARE @numRows INT = RAND()*(50-5)+5;
SELECT TOP (@numRows) *
FROM sys.objects
INSERT INTO ##Log
(
ProcName,
ExecutionTime,
TotalRowsReturned
)
SELECT
OBJECT_NAME(@@PROCID)
,GETDATE()
,@@ROWCOUNT
SET NOCOUNT OFF
END
GO
EXEC TestProc
GO 5
SELECT * FROM ##Log