0

我想知道从 Oracle 对象表中获取对象到 deref 变量的最佳方法是什么。

这是我的实际方法,让我们假设类型:

create or replace TYPE person AS OBJECT (
  dni            VARCHAR2(20),
  nom            VARCHAR2(20),
  MAP MEMBER FUNCTION get_dni RETURN varchar2
);

create or replace TYPE BODY person AS
  MAP MEMBER FUNCTION get_dni RETURN varchar2 IS
  BEGIN
    RETURN dni;
  END;
END;

使用此对象表:

create table partners of person;

然后,要person进入一个 var 我做:

declare
    a_person person;
begin
    select deref(ref(p)) into a_person
      from partners p 
     where p.dni = 1;
    ...
end;

有没有更优雅的方式来获取 unref 对象?

4

1 回答 1

1

似乎您的表格声明风格没有真正优雅的选择。

只有下面的变体,但它似乎不如你的优雅:

declare
  a_person person;
begin
  select person(p.dni, p.nom) into a_person
  from partners p 
  where p.dni = 1;
end;

即将对象分解为字段并将其构造回来。

但是如果你用对象类型字段声明表,例如

create table new_partners (pers person)

那么访问会简单得多:

declare
  a_person person;
begin
  select p.pers into a_person
  from new_partners p 
  where p.pers.dni = 1;
end;

SQLFiddle

于 2014-04-04T16:59:53.033 回答