Microsoft SSMS でスカラー値関数を作成しました。次のとおりです。
CREATE FUNCTION [dbo].[fGetCurrentBalFromName]
(
@Name NVarchar,
@CliFl Bit
)
RETURNS Money
AS
BEGIN
DECLARE @CurrentBal Money
select @CurrentBal=SUM(tt.Debt) from
(select case t.Clientfl when 1 then dbo.fGetClientNameFromId(t.AgentID)
else dbo.fGetSupplierNameFromId(t.AgentID)
end as Cli,
t.Clientfl,
case t.Clientfl when 1 then
case t.Incomfl
when 1 then t.Amount
else (-1)*t.Amount
end
else
case t.Incomfl
when 1 then (-1)*t.Amount
else t.Amount
end
end as Debt
from [Store].[dbo].[Money] t) tt where tt.Cli=@Name and tt.Clientfl=@CliFl
group by tt.Cli
RETURN @CurrentBal
END
実行すると
Select dbo.fGetCurrentBalFromName('Вали',1)
結果はありません(NULL)。
しかし、パラメータなしでクエリを単独で実行しようとすると
select SUM(tt.Debt) from
(select case t.Clientfl when 1 then dbo.fGetClientNameFromId(t.AgentID)
else dbo.fGetSupplierNameFromId(t.AgentID)
end as Cli,
t.Clientfl,
case t.Clientfl when 1 then
case t.Incomfl
when 1 then t.Amount
else (-1)*t.Amount
end
else
case t.Incomfl
when 1 then (-1)*t.Amount
else t.Amount
end
end as Debt
from [Store].[dbo].[Money] t) tt where tt.Cli='Вали' and tt.Clientfl=1
group by tt.Cli
私はまさに私が欲しいものを手に入れます。では、スカラー値関数を作成するときに私が犯した間違いは何ですか。どんな助けでも大歓迎です!