0
在SQL 2000上:需要关于SQL UDF的帮助?
我想写一个动态的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结构返回硬编码值。没有任何运气混合两者。 **这些名字已经改变,以保护无辜者。 **
更新:得到它的工作如下。圆括号在世界上造成了所有的不同。
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