【发布时间】:2020-06-03 07:52:41
【问题描述】:
数据库中有一个非常简单的公制单位转换表,如下所示:
| UnitFrom | UnitTo | Scale |
| m | mm | 1000 |
| m | cm | 100 |
etc.
我正在考虑创建一个函数来转换单位,该函数根据输入(Unit、FromUnit、ToUnit)从表中计算转换。
例如Conv_Units(0.1, 'm', 'cm') 返回 100。
这甚至可能吗?我想出的是以下,但它不起作用:
CREATE FUNCTION dbo.Conv_Units
(
[@Unit] float
, [@FromUnit] nvarchar(20)
, [@ToUnit] nvarchar(20)
);
RETURNS float
AS
BEGIN
DECLARE @ConvUnit float;
DECLARE @Unit float;
DECLARE @FromUnit nvarchar(20);
DECLARE @ToUnit nvarchar(20);
DECLARE @Scale float = (select Scale from dbo.UnitsConversion where FromUnit = @FromUnit and ToUnit = @ToUnit);
SELECT @ConvUnit = @Unit * @Scale
RETURN @ConvUnit
END
GO
【问题讨论】:
-
删除参数周围的括号并删除
DECLARE @Unit float; DECLARE @FromUnit nvarchar(20); DECLARE @ToUnit nvarchar(20);。
标签: sql sql-server tsql sql-server-2017 stored-functions