数据库中有一个非常简单的表,里面有公制单位换算,看起来像。
| 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