如何重載對像類型中的方法 (How to overload a method in an object type)


問題描述

如何重載對像類型中的方法 (How to overload a method in an object type)

我在對象 car 中有一個簡單的方法,它將功率從對象的馬力字段 (hp) 中的值轉換為千瓦 (kW)。代碼如下:

MAP MEMBER FUNCTION engine_power
RETURN FLOAT IS
  v_kw FLOAT := 0.745699872;
BEGIN
  RETURN hp * v_kw;
END;

現在我想重載這個方法來計算冪,但是結果會是INTEGER而不是FLOAT。

重載的語法是什麼對象主體中的方法?


參考解法

方法 1:

You can only have one MAP method, but you can add another method with the integer. You need to add it in both the type and type body statements:

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

I'm not sure you really want either to be a MAP method, but depends how you're using the methods.

(by CarosoAlex Poole)

參考文件

  1. How to overload a method in an object type (CC BY‑SA 2.5/3.0/4.0)

#plsql #overloading #SQL #oracle






相關問題

RAISE_APPLICATION_ERROR 不返回消息 (RAISE_APPLICATION_ERROR doesn't return the message)

PL/SQL 塊和循環練習 (PL/SQL block and LOOP exercise)

如何從列中僅提取編號的行 (How to extract only numbered rows from a column)

如何編寫一個程序來自動執行一組查詢 (How to write a procedure to execute set of queries automatically)

使用 DBMS_OUTPUT.put_line 顯示錯誤消息 (Display error message using DBMS_OUTPUT.put_line)

如何編寫將Oracle數據庫表數據導出到excel文件的程序 (How to write a Procedure which exports Oracle database table data into excel file)

如何重載對像類型中的方法 (How to overload a method in an object type)

有沒有辦法以編程方式從 Oracle 包中提取表引用? (Is there a way to programmatically extract table references from an Oracle package?)

批量插入 Oracle 數據庫:哪個更好:FOR 游標循環還是簡單的選擇? (Bulk Insert into Oracle database: Which is better: FOR Cursor loop or a simple Select?)

如何使用參數“foo 表”執行 SP? (How to execute SP with arguments 'table of foo'?)

PL/SQL 我做錯了什麼? (PL/SQL What am I doing wrong?)

PL/SQL 顯示帶有條件的表中的數據 (PL/SQL Display Data From a Table with a Condition)







留言討論