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