我的pl / sql块中有三个游标 光标a返回a1,a2,a3列,光标b返回b2,b2,b3列,光标c返回c1,c2,c3列。
DECLARE
cursor a is
select a1, a2,a3
from table_a;
cursor b(id number) is
select b1, b2,b3
from table_b
where table_b.id = id;
cursor c(id number) is
select c1,c2,c3
from table_c
where table_c.id = id;
BEGIN
--
END;
我如何将输出作为
a1 a2 a3 b1 b2 b3 c1 c2 c3
------------------------------------------------------
答案 0 :(得分:0)
检查下面的方案。
create table table_a (id int, a1 varchar2(20), a2 varchar2(20), a3 varchar2(20));
create table table_b (id int, b1 varchar2(20), b2 varchar2(20), b3 varchar2(20));
create table table_c (id int, c1 varchar2(20), c2 varchar2(20), c3 varchar2(20));
insert into table_a values (1, 'The', 'Quick', 'Brown');
insert into table_b values (1, 'Fox', 'Jumped', 'Over');
insert into table_c values (1, 'The', 'Lazy', 'Dog');
DECLARE
v_a table_a%ROWTYPE;
v_b table_b%ROWTYPE;
v_c table_c%ROWTYPE;
CURSOR abc IS SELECT a.a1, a.a2, a.a3, b.b1, b.b2, b.b3, c.c1, c.c2, c.c3
FROM table_a a
JOIN table_b b on (a.id=b.id)
JOIN table_c c on (a.id=c.id);
BEGIN
OPEN abc;
LOOP
FETCH abc INTO v_a.a1, v_a.a2, v_a.a3, v_b.b1, v_b.b2, v_b.b3, v_c.c1, v_c.c2, v_c.c3;
EXIT WHEN abc%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(v_a.a1||' '||v_a.a2||' '||v_a.a3||' '||v_b.b1||' '||
v_b.b2||' '||v_b.b3||' '||v_c.c1||' '||v_c.c2||' '|| v_c.c3);
END LOOP;
END;
/
The Quick Brown Fox Jumped Over The Lazy Dog
PL/SQL procedure successfully completed.
SQL>
假设连接这三个表是可以的,因为您将值一起输出,这意味着它们之间存在某种关系。但是,这是一个猜测,因为你没有在你的问题中明确说明。
尽管如此,我的回答确实可以回答你的问题。即使你设置3个游标而不是1,你连接输出的方式与我在这个例子中的方式没有什么不同。