我想在SQL中创建一个以表名作为输入的简单函数 并返回该表的记录数。
我怎样才能创造出这样一种动态的“动态”。功能
答案 0 :(得分:1)
啊,但你不必使用动态sql这样的东西。您可以改为使用表分区。
这对你有用。一个问题是,这可能并非总是100%准确,但我从未见过它是不正确的。根据文档,它是“分区中的大致行数”。
create function GetTableRowCount
(
@TableName sysname
) returns table as return
SELECT SUM(row_count) AS MyRowCount
FROM sys.dm_db_partition_stats
WHERE object_id = OBJECT_ID(@TableName)
GROUP BY OBJECT_NAME(object_id);
这甚至是一个内联表值函数,而不是更常见的标量函数。