2012-05-07 2 views
1

Попытки выполнить следующее:Печать Цитаты из вложенной таблицы

CREATE OR REPLACE 
PROCEDURE POPULATE_ACTOR_QUOTES (id_actor char) 
AS 
    CURSOR quote_recs IS 
     SELECT m.title, 
      m.year, 
      r.roleName, 
      q.quotechar 
     from quote q, 
      role r, 
      rolequote rq, 
      actor a, 
      movie m 
     where rq.quoteID = q.quoteID 
     AND rq.roleID = r.roleID 
     AND r.actorID = a.actorID 
     AND r.movieID = m.movieID 
     AND a.actorID = id_actor; 
BEGIN 
    FOR row IN quote_recs 
    LOOP 
     INSERT INTO table(
     SELECT quotes 
     FROM actor_quotes aq 
     WHERE aq.actorId = id_actor) 
     VALUES(
     ACTOR_QUOTE_TYPE(row.title, row.year, row.roleName, row.quotechar) 
    ); 
    end loop; 
END POPULATE_ACTOR_QUOTES; 
/

Создать PL PROCEDURE/SQL называется PRINT_ACTOR_QUOTES (путем изменения процедуры POPULATE_ACTOR_QUOTES) с одним параметром, который: печать вне Firstname и LastName атрибутов, соответствующих ACTORID (ACTORID является параметром процедуры) из таблицы ACTOR, а распечатав всю информацию цитаты из вложенной таблицы ЦИТАТЫ

Это то, что я создал:

CREATE OR REPLACE PROCEDURE PRINT_ACTOR_QUOTES (id_actor char) 
AS 
CURSOR quote_recs IS 
SELECT a.firstName,a.lastName, m.title, m.year, r.roleName ,q.quotechar from quote q, role r, 
rolequote rq, actor a, movie m 
where 
rq.quoteID = q.quoteID 
AND 
rq.roleID = r.roleID 
AND 
r.actorID = a.actorID 
AND 
r.movieID = m.movieID 
AND 
a.actorID = id_actor; 
BEGIN 
FOR row IN quote_recs 
LOOP 
    DBMS_OUTPUT.PUT_LINE(row.firstName || ' ' || row.lastName); 

END LOOP; 

END PRINT_ACTOR_QUOTES; 
/

Выход

SQL> EXECUTE PRINT_ACTOR_QUOTES ('00070') 

Dustin     Hoffman 

необходимо создать выходной сигнал, который выглядит как:

Джефф Голдблюм

|Title   | Year |  Role  |    Quote        | 
---------------------------------------------------------------------------------------------- 
|THE FLY   |1986 |SETH BRUNDLE | “I’m free and you don’t like it’’ | 
|INDEPENDENCE DAY| 1996 | DAVID LEVINSON | “I’ve given it a virus”   | 

У меня есть имя и второе имя - нужна информация от вложенной Таблица ЦЕНОВ

Помощь нужна!

я получил следующий запрос на выборку, которая выводит необходимую информацию из вложенной quotes- просто нужно добавить его к - МЕТОДИКИ PRINT_ACTOR_QUOTES

SELECT REC.* 
    FROM ACTOR_QUOTES A,TABLE(A.QUOTES) REC 
    WHERE ACTORID = ('00070') 
+0

Ваша проблема неясно, что происходит, когда вы пытаетесь выполнить цикл над результатами этого запроса? –

+0

Я создал вывод с именем и фамилией, но мне трудно добавить таблицу в DBMS_OUTPUT.PUT_LINE (row.firstName || '' || row.lastName); показать название, год, роль, цитату –

ответ

0

Я, вероятно, отсутствует что-то ...

CREATE OR REPLACE PROCEDURE PRINT_ACTOR_QUOTES (id_actor char) 
AS 
CURSOR quote_recs IS 
SELECT a.firstName,a.lastName, m.title, m.year, r.roleName ,q.quotechar from quote q, role r, 
rolequote rq, actor a, movie m 
where 
rq.quoteID = q.quoteID 
AND 
rq.roleID = r.roleID 
AND 
r.actorID = a.actorID 
AND 
r.movieID = m.movieID 
AND 
a.actorID = id_actor; 

is_first boolean := true; 

BEGIN 
FOR row IN quote_recs 
LOOP 
if is_first then 
    DBMS_OUTPUT.PUT_LINE(row.firstName || ' ' || row.lastName); 
    DBMS_OUTPUT.PUT_LINE('Title | Year | Role  |  Quote '); 
    is_first := false; 
end if; 

    DBMS_OUTPUT.PUT_LINE(row.title|| ' ' || row.year|| ' ' || row.role || ' ' || row.quotechar); 

END LOOP; 

END PRINT_ACTOR_QUOTES; 
/