sql - SQL Server 创建函数
问题描述
我已经完成了 IF 语句,并准备根据提供的条件返回值。我也尝试过 RETURN CASE 并且收到完全相同的错误
目的是将货币从英镑转换为美元或欧元,它进行乘法并返回。
稍后我会完善对话,但请帮助使其返回值。
如果您在我的查询末尾附近查看,您将看到 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
如果地区代码是美国,则将该值乘以 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
推荐阅读
- css - chrome(net::ERR_FAILED) 中的字体下载状态失败,Firefox 中的下载状态为 206,但不适用于其中任何一个
- python - 在Python中的文本文件中以逗号分隔的多行中的值求和
- mongodb - MongoDB:如何将对象值与数组值进行比较并在此对象中添加一个字段
- c# - 使用 MODI OCR 时出现“文件为空或损坏”错误消息
- reactjs - 语义 ui 反应日历的问题
- c - 将用户输入值存储到数组中并显示它们会显示垃圾值
- kotlin-coroutines - 创建类似于频道或广播频道的 Kotlin Coroutine 的流程实例
- git - 将分支放在另一个分支上的最简单方法
- c++ - 无法在 C++ 中使用 utf8 字符
- powershell - 远程运行 PowerShell 脚本