首页 > 解决方案 > 填充数据仓库(Oracle)的过程中的分布式查询问题

问题描述

我将用于在数据仓库中填充表的过程存在问题。我会试着举例说明。

我定义了三种类型,如下所示:

create or replace type room_t as object(
    ID INTEGER,
    n_seats INTEGER,
    cinema ref cinema_t
) not instantiable not final;
/

create or replace type film_screening_t as object (
    screen_date TIMESTAMP,
    room ref room_t,
);
/


create or replace type ticket_t as object(
    film ref film_screening_t,
    purchase_date DATE,
    price FLOAT,
    n_ticket INTEGER
);
/

以及相关的表:

create table rooms of room_t(
    ID primary key
);
/

create table film_screenings of film_screening_t(
  room NOT NULL
);

create table tickets of ticket_t(
    n_ticket primary key,
    film NOT NULL
)
/

我还在另一个我调用的数据库中创建了一个数据库链接:

op_db_link

当我使用这个数据库链接来获取房间的 id 时,就像下面的查询一样,一切都很好:

select deref(deref(film).room).id from tickets@op_db_link;

但是当我在一个过程中使用它时,我只获得空值。程序是:

create or replace
PROCEDURE prova_procedure AS
room_id integer;

cursor c is 
select deref(deref(film).room).id from tickets@op_db_link;

BEGIN
  open c;
  loop
    fetch c into room_id;
    dbms_output.put_line(user_id);
    exit when c%notfound;
  end loop;
end;

我怎么解决这个问题?我需要解决这个问题才能创建一个 ETL 过程来填充数据仓库

标签: oracleoracle11gdistributed-transactionsdatabase-link

解决方案


推荐阅读