Проблема с распределенным запросом в процедуре заполнения хранилища данных (Oracle) - PullRequest
0 голосов
/ 06 февраля 2019

У меня проблема с процедурой, которую я буду использовать для заполнения таблицы в хранилище данных.Я попытаюсь привести примеры.

У меня есть три типа, определенных следующим образом:

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

Когда я использую эту ссылку на базу данных, чтобы получить идентификатор комнаты, как в запросе ниже, все в порядке:

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 для заполнения хранилища данных

...