从视图

时间:2017-05-29 10:56:35

标签: sql-server-2008 user-defined-functions

我需要知道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中动态确定必须从中提取某些信息的数据库?

谢谢, 塞尔吉奥

0 个答案:

没有答案