如何重载对象类型中的方法

时间:2016-04-12 15:17:38

标签: sql oracle plsql overloading

我在对象orders id, amount, customer_id order_groups id, order_id order_items id, item_id, unit_price, quantity, total_price, order_group_id order_shipping id, name, address1, address2, city, state, zip, order_group_id 中有一个简单的方法,它将对象的马力场(hp)中的值转换为千瓦(kW)。代码如下:

car

现在我想重载此方法来计算功率,但结果将是INTEGER而不是FLOAT。

在对象主体中重载方法的语法是什么?

1 个答案:

答案 0 :(得分:1)

您只能拥有one MAP method,但可以使用整数添加其他方法。您需要在类型和类型主体语句中添加它:

create type my_object as object (hp number,
  MAP MEMBER FUNCTION engine_power RETURN FLOAT,
  MEMBER FUNCTION engine_power RETURN INTEGER
);
/

Type MY_OBJECT compiled

create type body my_object as
  MAP MEMBER FUNCTION engine_power
  RETURN FLOAT IS
    v_kw FLOAT := 0.745699872;
  BEGIN
    RETURN hp * v_kw;
  END;

  MEMBER FUNCTION engine_power
  RETURN INTEGER IS
    v_kw FLOAT := 0.745699872;
  BEGIN
    RETURN TRUNC(hp * v_kw);
  END;
end;
/

Type body MY_OBJECT compiled

我不确定你是否真的想成为一种MAP方法,但取决于你如何使用这些方法。