我在SQL Server中有一个表,其中列出了报表中的各个部分。有三个字段:SectionID(数字自动编号主键),SectionTitle(报表部分的标题)和SourceView(本地数据库中返回报表记录的视图的名称)。从T-SQL函数返回视图中的记录数
我需要的是一个视图,它具有这三列加上显示由'SourceView'返回的记录数的第四列。 喜欢的东西:
CREATE myView AS
SELECT
SectionID,
SectionTitle,
SourceView,
myFunction(SourceView) AS RowsInView
FROM
tblBaseData
我想这将是简单的写一个函数采取视图名称,返回的行数来实现。我最初的计划是在函数的主体中构建一些动态SQL。
CREATE FUNCTION myFunction(@ViewName VARCHAR) RETURNS INT AS
BEGIN
DECLARE @RowCount INT
DECLARE @SQL VARCHAR(200)
SET @SQL = 'SET @RowCount = (SELECT COUNT(*) FROM ' + @ViewName + ')'
EXEC sp_executesql @SQL
RETURN ISNULL(@RowCount, 0)
END
但是,你不能在函数中使用EXEC,所以你不能运行动态SQL,你不能使用EXEC来运行它返回一个值的过程,并不能查询系统对象,因为 - 虽然这将适用于表格 - 它不适用于视图。
我曾尝试没有成功如下:
How to get the row count for views from a database?
Execute function inside view SQL server
https://msdn.microsoft.com/en-GB/library/ms188655.aspx
Create a function for counting rows from any table
我试图得到一个视图中工作,因为我需要显示带有当前记录的网页上的结果ord计数,否则我会建立一个表并定期刷新数据,
我假设我只是对这个问题采用了错误的方法。任何人都可以将我指向正确的方向吗?谢谢。
基本回答了这个 - 由以下strickt01提供,则是可以更换包含返回表变量的过程的视图。这适用于报告服务和网络方法 - 因此,问题得以解决。感谢所有的帮助和时间。 – BBJones