Доброго времени суток. Понадобилось мне разработать функцию, которая бы в качестве параметра принимала имя таблицы и возвращала количество записей этой таблицы. Подразумевается, что таблица существует.
Нижеприведеный код система пропускает.
Однако при запуске :
ругается:
Only functions and some extended stored procedures can be executed from within a function.
Как обойти обойти это ограничение?
Понятно, что можно написать хранимую процедуру, которая возвращает количество строк во втором параметре с признаком Output
Может кому известны иные варианты?
Заранее благодарен за ответы
Нижеприведеный код система пропускает.
crete function [dbo].[fnCountRows] (@tblName varchar(max)) returns int as begin declare @res int = 0 declare @Sql nvarchar(max) = 'select @CountRowsOut = count(*) from ' + @tblName + ' (nolock)' exec sp_executesql @Sql, N'@CountLinesOut int output', @CountRowsOut = @res Output return @res end
Однако при запуске :
declare @c int = dbo.fnCountRows('MyTable') print @c
ругается:
Only functions and some extended stored procedures can be executed from within a function.
Как обойти обойти это ограничение?
Понятно, что можно написать хранимую процедуру, которая возвращает количество строк во втором параметре с признаком Output
Может кому известны иные варианты?
Заранее благодарен за ответы