У меня проблема с процедурой, которую я буду использовать для заполнения таблицы в хранилище данных.Я попытаюсь привести примеры.
У меня есть три типа, определенных следующим образом:
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 для заполнения хранилища данных