2012-05-07 4 views
1

다음 완료하려고 배우 테이블에서 ACTORID이 (ACTORID는 프로 시저 매개 변수)과 중첩 된 따옴표 테이블인쇄 지수는

이 모든 견적 정보를 인쇄하는 것은 내가 만든 것입니다 :

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-에서 필요한 정보를 제공합니다 다음 선택 쿼리 단지에 추가해야 가지고있다 - 절차

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

문제점이 명확하지 않은데,이 쿼리 결과를 반복 할 때 어떤 일이 발생합니까? –

+0

성과와 함께 출력을 만들었지 만 DBMS_OUTPUT.PUT_LINE (row.firstName || '|| row.lastName);에서 테이블을 추가하는 데 문제가 있습니다. 제목, 연도, 역할, 견적을 표시합니다. –

답변

0

내가 아마도 뭔가를 누락 PRINT_ACTOR_QUOTES ...

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; 
/