我需要知道SQL Server实例的任何数据库中包含可变数量的数据库的任何表中的记录数。
每个表的记录数是从基于sys.objects和sys.indexes的名为“webTableCount”的视图中获得的。该视图存在于所有数据库中。
我需要的是一个给定具有特定DataBaseName和TableName的行的查询,它返回该表在数据库中的行数。
我想创建一个用户自定义函数来做到这一点,问题是我可以通过使用动态SQL来实现,但动态SQL不能在UDF中使用,所以我现在陷入困境。
我将展示如何处理动态SQL:
CREATE FUNCTION [dbo].[GetNumberOfRecords]
(
@Database AS VARCHAR(128),
@TabName AS VARCHAR(128),
DECLARE @cnt INT
DECLARE @EXECSQL AS NVARCHAR(2000)
SET @ExecSQL = 'SELECT TOP 1 @cnt = RecordCount FROM ['
+ @Database + '].[dbo].[webTableCount] ' +
' WHERE [TABLE] = ''' + @TabName + ''' '
@ExecSQL, N'@cnt int out'
RETURN @cnt
END
有没有办法在UDF中动态确定必须从中提取某些信息的数据库?
谢谢, 塞尔吉奥