我已经完成了IF语句,并准备根据提供的条件返回该值。我也尝试过RETURN CASE,但收到完全相同的错误
目的是将货币从£转换为$或EURO,然后进行乘法运算并返回。
我将在稍后完善对话,但请帮助使其返回值。
如果您在查询的结尾附近查看,您会看到RETURN @Converted,尽管在这里看起来不错,但会出现以下错误
[ 消息178,级别15,状态1,过程fnCurrencyConverter,第23行 具有返回值的RETURN语句不能在此上下文中使用。 ]
谢谢
USE temp
GO
CREATE FUNCTION dbo.fnCurrencyConverter (@inPutMoneey INT, @inPutRegionCode VARCHAR(5))
RETURNS @Return TABLE
(
Monee MONEY,
RegionCode CHAR(5)
)
AS
BEGIN
DECLARE @Converted MONEY
SET @Converted = 0
BEGIN
IF(@inPutRegionCode = 'US')
SET @Converted = @inPutMoneey * 1.29
ELSE IF(@inPutRegionCode = 'EU')
SET @Converted = @inPutMoneey * 1.13
ELSE IF(@inPutRegionCode = 'AFG')
SET @Converted = @inPutMoneey * 0.50
END
RETURN
@Converted
END
如果区号是US,则将值乘以1.29,即当前的POUND到DOLLAR的汇率,依此类推。
答案 0 :(得分:2)
无需提及表变量名称。只需提及RETURN。足够了。您没有正确填充表格。
USE tempdb
GO
CREATE FUNCTION dbo.fnCurrencyConverter (@inPutMoneey INT, @inPutRegionCode VARCHAR(5))
RETURNS @Return TABLE
(
Monee MONEY,
RegionCode CHAR(5)
)
AS
BEGIN
DECLARE @Converted MONEY
SET @Converted = 0
BEGIN
IF(@inPutRegionCode = 'US')
BEGIN
SET @Converted = @inPutMoneey * 1.29
INSERT INTO @Return VALUES (@Converted, 'US')
END
ELSE IF(@inPutRegionCode = 'EU')
BEGIN
SET @Converted = @inPutMoneey * 1.13
INSERT INTO @Return VALUES (@Converted, 'EU')
END
ELSE IF(@inPutRegionCode = 'AFG')
BEGIN
SET @Converted = @inPutMoneey * 0.50
INSERT INTO @Return VALUES (@Converted, 'AFG')
END
END
RETURN
END
答案 1 :(得分:1)
您最后可以使用一次插入,因为一次满足一个条件并执行一次
CREATE FUNCTION dbo.fnCurrencyConverter (@inPutMoneey INT, @inPutRegionCode VARCHAR(5))
RETURNS @Return TABLE
(
Monee MONEY,
RegionCode CHAR(5)
)
AS
BEGIN
DECLARE @Converted MONEY
SET @Converted = 0
BEGIN
IF(@inPutRegionCode = 'US')
SET @Converted = @inPutMoneey * 1.29
ELSE IF(@inPutRegionCode = 'EU')
SET @Converted = @inPutMoneey * 1.13
ELSE IF(@inPutRegionCode = 'AFG')
SET @Converted = @inPutMoneey * 0.50
END
INSERT INTO @Return VALUES(@Converted, @inPutRegionCode)
--You can also use variable for Region code
RETURN
END