技术开发 频道

ORACLEERP开发基础之Oracle数据库基础

  PL/SQL面向对象编程

  自转到ORACLE开始,就开始对ORACLE OOP有非常高的热情,于是写了一个DEMO。先从创建TYPE开始,TYPE与PACKAGE非常相似。TYPE与JAVA中的CLASS可以等同。

  1、 创建TYPE规范

  create or replace type hek_send_mail_obj as object( mail_host varchar2(20),

  mail_port integer,

  member function test_f(i number)

  return varchar2 )instantiable not final;

  2、创建TYPE主体

  create or replace type body hek_send_mail_obj as

  member function test_f(i number) return varchar2 is

  begin

  return 'success visit ' ||i||' ' || self.mail_host||' '||self.mail_port;

  end;

  end;

  3、进行调用

  Declare

  --有多少个数据成员,在实例化TYPE时,必须都初始化,这一点跟JAVA的构造器类似,只是JAVA没有强制要求。

  t hek_send_mail_obj:= hek_send_mail_obj(' 192.168.1.110',44);

  begin

  --调用TYPE的方法test_f dbms_output.put_line(t.test_f(1));

  end;

  注:上面创建的TYPE都是临时对象,随着块的结束,对象生命也结束了。下面将会说明如何创建持久对象。

  4、持久化TYPE(也就是创建对象表)

  create table hek_send_mail_tbj of hek_send_mail_obj;

  5、在对象表中INSERT些数据

  insert into hek_send_mail_tbj values('192.168.210.232',25);

  insert into hek_send_mail_tbj values('192.168.210.232',80);

  insert into hek_send_mail_tbj values('192.168.210.232',35);

  6、进行调用

  select tb.mail_host,tb.mail_port,tb.test_f(2) from hek_send_mail_tbj tb

  注:①这边我们可以直接象关系表一样使用对象表,也不必进行初始化。ORACLE会自动初始化对象。 ②TYPE不能使用PACKAGE的对象等等,如:UTL_SMTP。

0
相关文章