五、 写一个PROCEDURE,名称为ShowInfo,用于根据员工号查询,如果该员工是经理,则输出该经理所管理的员工的员工号,姓名,工作,经理名字,薪水,部门名称等信息,如果该员工不是经理,则输出:“该员工不是经理”;要求每列占10个字符,输出格式如下,在最后一行输出查询到的职员个数。
SQL> call showinfo(7566);
员工号 员工姓名 工作类型 经理名字 薪水 部门名称
--------------------------------------------------------------
7788 SCOTT ANALYST JONES 5000 RESEARCH
7902 FORD ANALYST JONES 5000 RESEARCH
--------------------------------------------------------------
该经理管理2 个职员!
SQL> call showinfo(7369);
员工号 员工姓名 工作类型 经理名字 薪水 部门名称
--------------------------------------------------------------
--------------------------------------------------------------
该员工不是经理!
SQL> call showinfo(7566);
员工号 员工姓名 工作类型 经理名字 薪水 部门名称
--------------------------------------------------------------
7788 SCOTT ANALYST JONES 5000 RESEARCH
7902 FORD ANALYST JONES 5000 RESEARCH
--------------------------------------------------------------
该经理管理2 个职员!
SQL> call showinfo(7369);
员工号 员工姓名 工作类型 经理名字 薪水 部门名称
--------------------------------------------------------------
--------------------------------------------------------------
该员工不是经理!
需要创建一个游标类型mycursor
create or replace procedure showInfo(p_empno in varchar2,p_info out varchar2, ref_record out mycursor) is
v_count number;
begin
execute immediate 'select count(*) from emp where empno <>:1 start with empno=:2 connect by prior empno= mgr' into v_count using p_empno,p_empno;
if v_count= 0 then
p_info:='该经理管理'|| v_count||' 个职员!'
else
p_info:='该员工不是经理!';
end if;
open ref_record 'select count(*) from emp where empno <>:1 start with empno=:2 connect by prior empno= mgr' using p_empno,p_empno;
end;
v_count number:=0;
cursor myCur is select * from emp where emp.mgr=eno;
v_row emp%rowtype;
begin
select count(*) into v_count from emp where emp.mgr=eno;
if v_count>0 then
for oneRow in myCur loop
dbms_output.put_line(oneRow.empno ||' '
||onerow.ename||' ' ||onerow.job||' '
||onerow.mgr||' ' ||onerow.sal||' '
||onerow.deptno);
end loop;
else
dbms_output.put_line('该员工不是经理!');
end if;
end ShowInfo;
执行:SQL> call showinfo(7566);
7788 SCOTT ANALYST JONES 5000 RESEARCH
7902 FORD ANALYST JONES 5000 RESEARCH