OracleでのSQLの基本的な理解をお待ちしています。 私は現在、オブジェクト型のメソッドを持ってしようとしている、私の試みは、次のようになります。私は上記をコンパイルすることができませんオブジェクト型の年齢の計算 - Oracle
CREATE TYPE Person_Type AS OBJECT
(PersonName VARCHAR2(40),
DateBorn DATE,
DateDied DATE,
MEMBER FUNCTION get_age RETURN NUMBER)
CREATE OR REPLACE TYPE BODY Person_Type AS
MEMBER FUNCTION get_age RETURN NUMBER IS
BEGIN
*Some kind of IF DateDied NOT NULL*
RETURN months_between(trunc(sysdate),DateBorn))/12
END;
。最終的に、私はこのメソッドを呼び出して、今日の何人かの年齢を取得できるようにしたい。
私は現在、私のテーブル内の人の年齢を取得することができるよ経由: 選択MONTHS_BETWEEN(TRUNC(SYSDATE)、DateBorn)/ 12 年齢としてperson_table
からしかし、私はこれを希望呼び出し可能なメソッド。
私の理解では、オブジェクト型の中にメソッドを持つこの方法では、取得した行のいずれかのDateBornフォームを使用しますか?私は明らかに非常に間違っていますが、次のステップが何であるか、そして私が現時点でどのように間違っているかを知る必要があります。
ありがとうございます!
あなたの質問は、あなたが 'DateBorn'がNULLの場合、自動的になります結果明らかにあなたがしようとしたものを伝える必要がありますし、あなたの期待出力 – Ravi
何明確ではありませんNULLにもなります。 –
こんにちはRavi、私は今日の日付に基づいてsomeonesの年齢を返す(months_between(trunc(sysdate)、to_date('01 -01-1990 '、' dd-mm-yyyy '))/ 12)を使用することができます10進形式ですが、これをメンバー関数にどのように変換すればよいでしょうか? – lesovren