デフォルトでは、非静的関数ごとに、暗黙的に宣言されself
たパラメーターはIN
パラメーター モードになります。つまり、単に変更することはできません。ただし、非静的プロシージャの場合self
、パラメーターはIN OUT
デフォルトのパラメーター モードであることに注意してください。
関数が複数の値を返すことを許可しud_mosh
、オブジェクトの value プロパティを変更し、呼び出し元に同じ値を返すことはお勧めできませんが、この場合、パラメーター モードself
で関数のパラメーターを明示的に宣言できます。IN OUT
create or replace type CAR as object (
mosh_dvig number,
obiem_dvig number,
color varchar2(20),
type_form varchar2(20),
massa number,
num_peredach number,
ud_mosh number,
member function ud_mosh_dvig(self in out car) return number
);
TYPE CAR compiled
create or replace type body CAR
is
member function ud_mosh_dvig(self in out car)
return number as
begin
self.ud_mosh := self.mosh_dvig/self.massa;
return self.ud_mosh;
end ud_mosh_dvig;
end;
TYPE BODY CAR compiled
ただし、パラメーターモードで関数の仮パラメーターが宣言されているため、SQLでその関数を使用することはできませIN OUT
ん-PL/SQLのみ
set serveroutput on;
clear screen;
declare
l_obj car;
l_obj1 car;
l_res number;
begin
l_obj := new car(1,1,'1','1',4,1,1);
l_res := l_obj.ud_mosh_dvig();
dbms_output.put_line('ud_mosh prop value: ' || l_obj.ud_mosh || chr(13)
|| 'Function returns: ' || to_char(l_res));
end;
/
anonymous block completed
ud_mosh prop value: 0.25
Function returns: 0.25