2017-03-26 15 views
0

私は、ストアドプロシージャから移入しているTempテーブルを持っています。データが一時テーブルに格納されたら、計算を実行して他のフィールドにデータを入力するためにデータを使用しています。SQL Server - selectでSPを実行

例:私が行うことができるようにしたいどのような

CREATE TABLE #Result1 (
    SOrder integer, 
    Var1 double, 
    Var2 double, 
    Var3 double, 
    Calc1 double, 
    Calc2 double) 

--Fills the Temp Table initially 
Insert #Result1 
(Select sorder, var1, var2, var3, 0,0,0 from myTable) 


--Fills with calculation stuff 
Select SOrder = 0, 
     Calc1 = Var1/Var2 * 100 
     Calc2 = (Var2-Var1)/Var3 * 100 
From #Result1 

はこれです:

--Fills with SP stuff 
Select SOrder = 0, 
     Calc1 = exec spLocal_CalcMetric (Var1, Var2) 
     Calc2 = exec spLocal_CalcMetric (Var1, Var2) 
From #Result1 

はSPからのリターンで一時テーブルを更新するには、このような何かをする方法はあります?

+1

あなたは機能、ないの手順でそれを行うことができますが、あなたがやっているすべては、ここで簡単な選択を複雑にしています。 – DavidG

+0

これは実際にはそれよりも複雑ですが、私はここに独自のSQLをたくさん置くことは望ましくありませんでした。ごめんなさい。 – Andrew

答えて

2

procedureではなくfunctionで行うことができますが、ここでは単純な選択を複雑にしています。関数もパフォーマンス上の問題になります。

CREATE FUNCTION dbo.Local_CalcMetric 
(
    @var1 DOUBLE, 
    @var2 DOUBLE, 
    @var3 DOUBLE 
) 
RETURNS DOUBLE 
AS 
BEGIN 
    RETURN (@[email protected])/@var3 * 100 
END 

をし、それを使用します:しかし、あなたはこれを行うことができます

SELECT SOrder = 0, 
     Calc1 = dbo.Local_CalcMetric (Var1, Var2, Var3) 
     Calc2 = dbo.Local_CalcMetric (Var1, Var2, Var3) 
FROM #Result1 
+0

私が呼び出すはずのストアドプロシージャは、その中にたくさんのものがあります...単純なA/Bは表示されていません。それがこれの理由です。私はここでそのコンセプトを単純化しようとしました。それはより意味をなさない(そして、専有情報を放棄しません)。ありがとう。 – Andrew

関連する問題