create type obj as object (
a number,
b number
);在包objPack中定义
oo obj;
以后如何初始化使用oo呢?
因为不初始化的话
下面老在运行时就抱错!
procedure  setObjValue(a number,b number) is
  begin
  
    objPack.o.a := a; //抱错
    objPack.o.b := b;
  end;

解决方案 »

  1.   

    procedure  setObjValue(a number,b number) is
      begin
      
       oo := obj(a,b);
      end;
      

  2.   

    是的,构造函数,oracle会为每个对象类型产生一个构造函数,但参数和属性必须以一样的方式声明
      

  3.   

    create or replace package objPack is  o obj;
      times number;
      procedure  setObjValue(a number,b number);  end objPack;
    procedure  setObjValue(a number,b number) is
      begin
        objPack.o  := obj(a,b);
        objPack.o.a :=  objPack.o.a + a;
        objPack.o.b :=  objPack.o.b + b;
      end;
    end objPack;
    这样可以,但是又有新问题,这样每调用一次setObjValue,就会初始化一次,这样的话,包objPack
    中o始终是新的,我想只让他初始化一次,以后设置的值始终是再以前基础上叠加起来的!? 应该在那里初始化呢?
    因为我想在这个包里面的o这个对象总保存所有值得累加值!
      

  4.   

    入口的地方初始化? 不太理解!我的变量就是全局变量! 我是第一次用这个,不太会! 麻烦细一些!
    包的入口地方是那里?create or replace package objPack is  o obj;
      times number;
      procedure  setObjValue(a number,b number);  end objPack;