Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 MS SQL 2016. Функция возвращающая количество строк в любой таблице (параметр)  [new]
Vlad_Molodoj
Member

Откуда:
Сообщений: 7
Доброго времени суток. Понадобилось мне разработать функцию, которая бы в качестве параметра принимала имя таблицы и возвращала количество записей этой таблицы. Подразумевается, что таблица существует.
Нижеприведеный код система пропускает.
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

Может кому известны иные варианты?

Заранее благодарен за ответы
30 июл 18, 23:55    [21616379]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2016. Функция возвращающая количество строк в любой таблице (параметр)  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36928
Откройте для себя sys.partitions и иже с нею.
31 июл 18, 00:02    [21616381]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL 2016. Функция возвращающая количество строк в любой таблице (параметр)  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5235
Гавриленко Сергей Алексеевич
Откройте для себя sys.partitions и иже с нею.

+ sys.dm_db_index_physical_stats
31 июл 18, 00:03    [21616382]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить