2011-05-06 5 views
0

SQL 2000の場合:SQL UDFのヘルプが必要ですか?

入力基準に応じて5つのフィールドのいずれかの値を取得する動的UDFを作成しようとしています。ここで私はこれまで持っているものです。

CREATE FUNCTION dbo.fBudgetBid (@sJob int, @sCO nvarchar(10), @sCat nvarchar(10)) 
RETURNS float 
AS 
BEGIN 
    Declare @ERC float 
    Set @ERC = Case @sCat 
    WHEN 'Field' Then Select [Field] From [dbo].[Estimate] Where [Job] = @sJob AND [CO] = @sCO 
    WHEN 'Eng' Then Select [Eng] From [dbo].[Estimate] Where [Job] = @sJob AND [CO] = @sCO 
    WHEN 'PM' Then Select [PM] From [dbo].[Estimate] Where [Job] = @sJob AND [CO] = @sCO 
    WHEN 'Shop' Then Select [Shop] From [dbo].[Estimate] Where [Job] = @sJob AND [CO] = @sCO 
    WHEN 'Purch' Then Select [Purch] From [dbo].[Estimate] Where [Job] = @sJob AND [CO] = @sCO 
    END 
    Return @ERC 
END 

私は値を返すために、単一のSELECTステートメントを使用している、と私はTHEN構造がハードコードされた値を返す場合を使用していました。 2つを混ぜ合わせる運がない。 **名前は無実を守るために変更されました。 **

更新:以下のように動作しました。カッコは世界のすべての違いを作りました。

BEGIN 
Return (Case @sCat 
    WHEN 'Field' Then (Select [Field] From [dbo].[Estimate] Where [Job] = @sJob AND [CO] = @sCO) 
    WHEN 'Eng' Then (Select [Eng] From [dbo].[Estimate] Where [Job] = @sJob AND [CO] = @sCO) 
    WHEN 'PM' Then (Select [PM] From [dbo].[Estimate] Where [Job] = @sJob AND [CO] = @sCO) 
    WHEN 'Shop' Then (Select [Shop] From [dbo].[Estimate] Where [Job] = @sJob AND [CO] = @sCO) 
    WHEN 'Purch' Then (Select [Purch] From [dbo].[Estimate] Where [Job] = @sJob AND [] ] = @sCO) 
    END) 
END 

答えて

2

あなたの要件に答えるかどうかを試してみてください。

DEClARE @ERC FLOAT 

SELECT @ERC = CASE @sCat WHEN 'Field' THEN [Field] 
      WHEN 'Eng' THEN [Eng] 
      WHEN 'PM' THEN [PM] 
      WHEN 'Shop' THEN [Shop] 
      WHEN 'Purch' THEN [Purch] END 
FROM [dbo].[Estimate] 
WHERE [Job] = @sJob 
AND [CO] = @sCO 

RETURN @ERC