oracle PL/SQL習題

(1)編寫一個PL/SQL塊,輸出所有員工的員工姓名、員工號、工資和部門號。

declare
  v_emp scott.emp%rowtype;
  cusor a is select empno,ename,sal,deptno from emp;
begin 
open a ;
  loop
  fetch a into v_emp;
  exit when a%notfound;
  dbms_output.put_line(v_emp.empno||’ ‘||v_emp.ename||’ ‘||v_emp.sal||’ ‘);
  end loop;
close a;
end;

(2)編寫一個PL/SQL塊,輸出所有比本部門平均工資高的員工信息。

Declare
  V_emp scott.emp%rowtype;
  Cursor a is select * from emp a where sal >(select avg(sal) from emp b where a.deptno=b.deptno )
 Begin 
   Open a 
   Loop 
Fetch a into v_emp;
Exit when a%notfound;
Dbms_output.put_line(v_emp.ename||’ ‘||v_emp.empno||’ ‘||v_emp.sal||’ ‘||v_emp.depno);
End loop;
Close a;
End;

(3)編寫一個PL/SQL塊,輸出所有員工及其部門領導的姓名、員工號及部門號。

Declare
 V_emp scott.emp%rowtype;
 Cursor a is select a.ename,a.empno,a.deptno,b.ename mname from emp a inner join emp m on e.empno=m.mrg
Begin 
For v_emp in a
loop
    Dbms_output.put_line(v_emp.empno||' '||v_emp.deptno||' '||v_emp.ename||' 
'||v_emp.mname);
 End loop;
End;

(4)查詢姓爲“SMITH”的員工信息,並輸出其員工號、姓名、工資、部門號。
– –如果該員工不存在,則插入一條新記錄,員工號爲2012,員工姓名爲“Smith”,工資爲7500元,入職日期爲“2002年3月5日”,部門號爲50。
– –如果存在多個名“Smith”的員工,則輸出所有名爲“Smith”的員工號、姓名、工資、入職日期、部門號L。

Declare 
  V_emp emp%rowtype;
Begin 
  Select * into v_emp from emp where ename=’Smith’;
   Dbms_ouput.put_line(v_emp.empno||’ ‘||v_emp.ename||’ ‘||v_emp.sal||’ ‘||v_emp.deptno);
   Exception 
      When no_data_found then 
      Insert into emp(2012,’Smith’,7500,’5-3月-2002’,50);
      When too_many_rows then
        For v_emp in (select * from emp where ename=’Smith’)
        Loop
        Dbms_output.put_line(v_emp.empno||’ ‘ ||v_emp.ename||’ ‘||v.emp.sal||’ ‘||v_emp.hiredate||’ ‘||v_emp.deptno);
End loop;
End;
發佈了44 篇原創文章 · 獲贊 15 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章