创建类型。 pls 00363表达式不能用作赋值

时间:2013-10-28 18:31:12

标签: oracle oracle11g oracle-sqldeveloper oracle-type

请帮助我理解这个错误.. 可能是我必须做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;

1 个答案:

答案 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