有什么方法可以在SQL Server存储过程中声明.Net类或结构的实例和/或将它们用作函数中的参数?
我有一个.Net方法,它接受我的public class UnitOfMeasure
{
public static UnitOfMeasure Gram {get;} = new UnitOfMeasure("gram","g",UnitType.Mass, 0.001, 0);
public static UnitOfMeasure Kilogram {get;} = new UnitOfMeasure("kilogram","kg",UnitType.Mass,1,0);
...
public static IEnumerable<UnitOfMeasure> NamedUnits {get;} =
new List<UnitOfMeasure>(){Gram, Kilogram, ...};
public string Name {get; private set;}
public string Symbol {get; private set; }
public UnitType {get; private set;}
public double StandardUnits {get; private set}
public double StandardOffset {get; private set}
public UnitOfMeasure(string name, string symbol, UnitType type, double standardUnits, double standardOffset)
{
...
}
public static double? Convert(UnitOfMeasure fromUnit, UnitOfMeasure toUnit, double? value)
{
double? standardvalue = (value * fromUnit.StandardUnits) + fromUnit.StandardOffset;
double ret = (standardvalue - toUnit.StandardOffset)/ toUnit.StandardUnits;
return ret;
}
public static double Convert(string fromUnit, string toUnit, double? value)
{
var unit1 = NamedUnits.Single(unit => unit.Name == fromUnit);
var unit2 = NamedUnits.Single(unit => unit.Name == toUnit);
return Convert(unit1, unit2, value);
}
}
类的两个实例,并将值从一个单位转换为另一个单位。
我的.Net类看起来如下所示。为了简洁起见,我省略了很多代码......
udf_ConvertUnits('gram', 'kilogram', 200); //returns 0.2
我已经能够将我的转换(按名称)方法映射到我的数据库中的UDF,但它仅适用于从/向我/'34;命名单位&#34中的单位转换时;采集。
declare @USD = CreateUnit('US Dollar', 'USD', 'Currency', 100, 0);
declare @EUR = CreateUnit('Euro', 'EUR', 'Currency', 88.9, 0);
udf_ConvertCustomUnits(@USD, @EUR, 200); // returns 177.8
我希望能够在SQL中定义自定义单位并在它们之间进行转换......
{{1}}