現在、ほとんどのレポートではストアドプロシージャを使用していますが、結果セットをさらに条件付きで結合できる柔軟性がありたいと思います。保存されprocsのでこれを行うにはストアドプロシージャとテーブル値関数を使用するのが適切な場合
、私は下図のように一時テーブル内にStoredProcから結果セットを保存する必要があります。
CREATE TABLE #Top_1000_Customers (
CustomerCode BIGINT,
Firstname VARCHAR(100),
Surname VARCHAR(100),
State VARCHAR(),
MonthlySpend FLOAT)
INSERT INTO #Top_1000_Customers
EXEC FindTop1000Customers()
SELECT CustomerCode, Firstname, Surname, State, MonthlySpend float
FROM #Top_1000_Customers
WHERE State = 'VIC'
DROP TABLE #Top_1000_Customers
私は、テーブル値関数を使用してこれを行う場合は、このコードは次のようになります。
SELECT FindTop1000Customers()
WHERE State='VIC'
私が望むのは、テーブル値関数を別のテーブルと結合することもできます。
これは、格納されたprocsを使用するよりも少し上品であると思われます。また、パフォーマンスが向上するように見えます。結果を一時表にスプールする必要がないためです。
テーブル値関数を使用する代わりに、ストアドプロシージャを使用してこれらのタイプのタスクを実行する方が良い理由はありますか?
残念ですが、本当です。 –