(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;