0

約200行以上を返すレポートがあり、特定のタイプの合計数量(つまり、在庫にあるジェリービーンズの数)を計算する必要がある関数を使用することを計画した列の1つにあります。SQLを実行したり、特定のセル/テキストボックス内で関数またはストアドプロシージャを呼び出して、現在のグループ列プロパティに対してのみこの関数を実行できるようにする方法はありますか?

この機能は、1回の実行に約3秒かかります。ただし、レポート本文に使用するストアドプロシージャで使用すると、データベースの特定のテーブル(27000以上のレコード)の各レコードの関数を実行するため、ストアドプロシージャに約3分かかります。

4

1 に答える 1

0

データセットの本体にあるスカラー関数は問題なく機能するはずです。これは、SSRSで関数を作成するのに時間をかけるよりもはるかに簡単です。そうでなければ、内部のSQLがすべての作業を実行し、おそらくデータもより高速に返すためです。2つの異なるデータセットを関連付ける必要がない限り、おそらくカスタム式を使用する必要があります。ただし、可能な限り、データセットでほとんどの計算を行う傾向があります。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 に答える