SQL Server未从用户定义的函数返回正确的输出

时间:2015-09-25 12:04:02

标签: sql-server-2008

我试图从另一个UDF调用UDF并希望获得所需的输出。但是,SQL Server不会在第二个UDF中返回任何内容。

我的电话是:

DECLARE @V_F VARCHAR(200)
EXEC @V_F = dbo.fnCalcDiscount 220,'1234567812345679','Thailand'
PRINT @V_F
GO

DECLARE @V_F VARCHAR(200)
EXEC @V_F = dbo.groupsanddiscounts '1234567812345679','Thailand',220,220
PRINT @V_F
GO

输出:

110
0

groupsanddiscounts的身体:

CREATE FUNCTION [dbo].[groupsanddiscounts]
    (@p_PROMOCODE VARCHAR(50),
     @p_COUNTRY VARCHAR(100),
     @p_TOTVAL INT,
     @p_NEWSIMCOST INT) 
RETURNS VARCHAR(300) 
AS BEGIN
    DECLARE @p_FINALVALUE VARCHAR(300)

    SELECT @p_FINALVALUE =  dbo.fnCalcDiscount (@p_NEWSIMCOST, @p_PROMOCODE, @p_COUNTRY)
    RETURN @p_FINALVALUE         
END

fnCalcDiscount的身体

CREATE FUNCTION [dbo].[fnCalcDiscount] 
    (@p_TOTVAL INT, 
     @p_PROMOCODE VARCHAR(200), 
     @p_COUNTRY VARCHAR(200))
RETURNS VARCHAR(300)
AS BEGIN
    DECLARE @retResult VARCHAR(300) 

    SELECT @retResult = '110'
    RETURN @retResult
END

知道什么是狂暴的吗?

由于

Output

1 个答案:

答案 0 :(得分:0)

尝试使用select

select dbo.fnCalcDiscount(220, '1234567812345679', 'Thailand')

我很惊讶exec并不会简单地返回错误。它通常用于存储过程和SQL代码。