我在对象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。
在对象主体中重载方法的语法是什么?
答案 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方法,但取决于你如何使用这些方法。