SQL Server创建函数

SQL Server创建函数,sql,sql-server,Sql,Sql Server,我已经完成了IF语句,并准备根据提供的条件返回值。我也尝试了返回案例,我收到了完全相同的错误 目的是将货币从英镑转换为美元或欧元,它进行乘法运算并返回 我会润色后面的对话,但请帮助它返回值 如果您查看我的查询的末尾,您将看到RETURN@Converted,尽管这里看起来不错,但它给出了以下错误 [ Msg 178,15级,状态1,程序fnCurrencyConverter,第23行 具有返回值的RETURN语句不能在此上下文中使用。 ] 谢谢 USE temp GO CREATE FUNCT

我已经完成了IF语句,并准备根据提供的条件返回值。我也尝试了返回案例,我收到了完全相同的错误

目的是将货币从英镑转换为美元或欧元,它进行乘法运算并返回

我会润色后面的对话,但请帮助它返回值

如果您查看我的查询的末尾,您将看到RETURN@Converted,尽管这里看起来不错,但它给出了以下错误

[ Msg 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,即当前英镑兑美元汇率,依此类推。

无需提及表变量名称。只需提及退货。这就够了。您没有正确填充表

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

您最终可以使用单插入,因为在某个时间,一个条件将为true并执行

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

您的函数声明为返回一个表,但它返回的是钱?非常感谢,我的查询编码与urs完全相同,但缺少INSERT语句。我一直在修改它,但没有什么不同,我有点沮丧lol。我创建这个函数是为了故意挣扎,如果我对此有任何进一步的疑问,我会在这里发表评论。非常感谢。很高兴它对Hanks有很大帮助,它将大大减少编码