五、 写一个PROCEDURE,名称为ShowInfo,用于根据员工号查询,如果该员工是经理,则输出该经理所管理的员工的员工号,姓名,工作,经理名字,薪水,部门名称等信息,如果该员工不是经理,则输出:“该员工不是经理”;要求每列占10个字符,输出格式如下,在最后一行输出查询到的职员个数。
SQL> call showinfo(7566);
员工号    员工姓名  工作类型  经理名字  薪水      部门名称
--------------------------------------------------------------
7788      SCOTT     ANALYST   JONES     5000      RESEARCH
7902      FORD      ANALYST   JONES     5000      RESEARCH
--------------------------------------------------------------
该经理管理2 个职员!
SQL> call showinfo(7369);
员工号    员工姓名  工作类型  经理名字  薪水      部门名称
--------------------------------------------------------------
--------------------------------------------------------------
该员工不是经理!

解决方案 »

  1.   

    回  java3344520 : 对啊~~
      

  2.   

    select * from emp where empno <>'7788' start with empno='7788' connect by prior empno= mgr
      

  3.   

    参考sql:
    需要创建一个游标类型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;
      

  4.   

    create or replace procedure ShowInfo(eno in emp.empno%type) is
    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