使用包和游标连接三个表

时间:2012-12-05 17:12:44

标签: sql oracle10g oracle11g

我是sql的新手,所以我需要帮助才能理解这一点。

我有3张桌子: -

表1: - 员工编号。 员工姓名 为person_id

表2: - 联系号码。 为person_id

表3: - 地址 为person_id

我尝试创建一个包并使用一个过程来定义游标。现在我想使用连接从表中显示联系人号码,地址和号码。我已经应用了连接条件,但我无法理解如何显示结果。

包装正文

create or replace package pacakge_name
    as 
    procedure procedure_name

    declare
    cursor cur_name is select * from table1 join table2 on table1.person_id=table2.person_id join table 3 on table1.person_idd=table3.id;

    var_curname cur_name%rowtype;

    begin

    open cur_name;

    loop
    fetch cur_name into var_curname
    exit
    when cur_name%NOTFOUND;
    end loop;
    close cur_name;
    end;

1 个答案:

答案 0 :(得分:1)

要向控制台显示结果,您必须dbms_output.put_line(var_curname.fieldname);

这将是您的光标查询:

select table2.contact_no,
table3.address,
table1.employee_no
from 
table1,
table2,
table3
where table1.person_id = table2.person_id and
table2.person_id = table3.person_id

所以你的dbms_output.put_line将是

dbms_output.put_line(var_curname.contact_no||'-'||var_curname.address||'-'||var_curname.employee_no);