请帮助我理解这个错误.. 可能是我必须做ud_mosh_dvig(x号码,y号码)并在之后创建类型主体。
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 return number
);
create or replace type body CAR
is
member function ud_mosh_dvig return number
as
begin
self.ud_mosh:=self.mosh_dvig/self.massa;
return self.ud_mosh;
end ud_mosh_dvig;
end;
答案 0 :(得分:4)
默认情况下,对于每个非静态函数,隐式声明的self
参数都在IN
参数模式下。这意味着它根本无法修改。但是,应该注意的是,对于非静态过程,self
参数处于IN OUT
默认参数模式。
虽然允许函数返回多个值不是一个好习惯,但更改对象的值ud_mosh
属性并将相同的值返回给调用者,在这种情况下,您可以显式声明{{1 self
参数模式中函数的参数:
IN OUT
但是你无法在SQL中使用该函数,因为在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
参数模式中声明了函数的形式参数 - 只有PL / SQL
IN OUT