Oracle 打印嵌套表中的引号
正在尝试完成以下操作:Oracle 打印嵌套表中的引号,oracle,plsql,oracle10g,Oracle,Plsql,Oracle10g,正在尝试完成以下操作: 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,
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;
/
创建一个名为PRINT_ACTOR_QUOTES的PL/SQL过程,方法是使用单个参数修改过程POPULATE_ACTOR_QUOTES:从ACTOR表中打印出与ACTORID对应的firstname和lastname属性ACTORID是过程参数,并从嵌套的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;
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” |
我有第一个名字和第二个名字-需要嵌套引号表中的信息
需要帮助
我得到了下面的select查询,它从嵌套的引号中调出所需的信息-只需要将它添加到-PROCEDURE PRINT\u ACTOR\u quotes中
SELECT REC.*
FROM ACTOR_QUOTES A,TABLE(A.QUOTES) REC
WHERE ACTORID = ('00070')
我可能错过了什么
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;
/
您的问题不清楚,当您尝试循环此查询结果时会发生什么情况?我创建了一个名为和姓为的输出,但在DBMS|u OUTPUT.PUT_LINE row.firstName | | | row.lastName下添加表时遇到问题;显示标题、年份、角色、报价