0

我有一个返回大约 200 多行的报告,在其中一个列上我计划使用一个函数来计算给定类型的总量(即库存中有多少果冻豆)。有没有办法让我在特定的单元格/文本框中执行 SQL 或调用函数或存储过程,以便我可以仅为当前组列属性执行此函数?

此函数执行一次大约需要 3 秒。但是,如果我在用于报表正文的存储过程中使用它,该存储过程大约需要 3 分钟,因为它正在为数据库的特定表(27000 多条记录)中的每条记录执行该函数。

4

1 回答 1

0

数据集主体中的标量函数应该可以正常工作。这比花时间在 SSRS 中创建函数要容易得多,因为底层的 SQL 会完成所有工作,并且可能也会更快地返回数据。除非您必须关联两个不同的数据集,否则您可能必须使用自定义表达式。不过,我倾向于尽可能在数据集中进行大部分数学运算。您在 SSRS 中使用的表达式越多,您的报告就会变得越慢。

如果我创建一个简单的数据库、一个简单的表并具有一个标量函数(例如简单的一个):

use test-- database I created for concepts

create table Person ( id int identity, person varchar(64), orders int );

insert into Person values ('Brett',10),('Brett',20),('John',10)
GO

create function dbo.tester ( @intputint int )

returns int

as 

begin

declare @return int 


select @return = @intputint * 10

return @return

end
GO

当我刚刚在 SQL Server 2008 中执行此操作时,我应该能够使用该标量函数创建一个列:

select *, dbo.tester(orders) as OrdersTimesTen
from Person
于 2013-01-20T19:29:33.663 回答