幾十個(gè)實(shí)用的PL/SQL(1)
2024-07-21 02:08:32
供稿:網(wǎng)友
這是我在accp學(xué)習(xí)的qa,覺(jué)得對(duì)初學(xué)者很有幫助,貼出。
----
第一階段
q.編寫(xiě)一個(gè)pl/sql程序塊以顯示所給出雇員編號(hào)的雇員的詳細(xì)信息。
a.
declare
erec emp%rowtype;
begin
select * into erec from emp where empno=&雇員編號(hào);
dbms_output.put_line('empno' || ' ' || 'ename' || ' '|| 'job' || ' ' || 'manager' || ' ' || 'hiredate' || ' ' || 'salary' || ' ' || 'commision' || ' ' || 'deptno');
dbms_output.put_line(erec.ename || ' ' || erec.job || ' ' || erec.mgr || ' ' ||erec.hiredate || ' ' || erec.sal || ' ' || erec.comm || ' ' || erec.deptno);
end;
/
q.編寫(xiě)一個(gè)pl/sql程序塊以計(jì)算某個(gè)雇員的年度薪水總額。
a.
declare
esal number;
eename emp.ename%type;
begin
select (nvl(sal,0)+nvl(comm,0))*12,ename into esal,eename from emp where empno=&雇員編號(hào);
dbms_output.put_line(eename || '''s years salary is ' || esal);
end;
/
q.按下列加薪比執(zhí)行:
deptno raise(%age)
10 5%
20 10%
30 15%
40 20%
加薪的百分比是以他們現(xiàn)有的薪水為根據(jù)的。寫(xiě)一pl/sql以對(duì)指定雇員加薪。
a.
declare
vcounter number:=10;
vraise number;
begin
loop
exit when vcounter>40;
update emp set sal=nvl(sal,0)+nvl(sal,0)*0.05 where deptno=vcounter;
vcounter:=vcounter+10;
end loop;
end;
/
q.編寫(xiě)一pl/sql以向“emp”表添加10個(gè)新雇員編號(hào)。
(提示:如果當(dāng)前最大的雇員編號(hào)為7900,則新雇員編號(hào)將為7901到7910)
a.
declare
vcounter number;
begin
select max(empno) into vcounter from emp;
for i in 1..10
loop
vcounter:=vcounter+1;
insert into emp(empno) values(vcounter);
end loop;
end;
/
q.只使用一個(gè)變量來(lái)解決實(shí)驗(yàn)課作業(yè)4。
a
declare
erec emp%rowtype;
-- vraise number;
begin
select * into erec
from emp
where ename='&ename';
if erec.job='clerk' then
update emp set sal=sal+500 where empno=erec.empno;
elsif erec.job='salesman' then
update emp set sal=sal+1000 where empno=erec.empno;
elsif erec.job='analyst' then
update emp set sal=sal+1500 where empno=erec.empno;
else
update emp set sal=sal+2000 where empno=erec.empno;
end if;
-- update emp set sal=sal+vraise where empno=erec.empno;
-- dbms_output.put_line(vraise);
end;
/
q.接受兩個(gè)數(shù)相除并且顯示結(jié)果。如果第二個(gè)數(shù)為0,則顯示消息“divide by zero”。
a.
declare
num1 number;
num2 number;
begin
num1:=#
num2:=#
dbms_output.put_line(num1 || '/' || num2 || ' is ' || num1/num2);
exception
when zero_divide then
dbms_output.put_line('didn''t your teacher tell you not to divide by zero?');
end;
/