下面分享一些Oracle的PL/SQL编程方面的习题,以下为个人写的答案。多指教!
1、简单PL/SQL块程序编写与运行,要求:接收某一姓名信息XXX,并输出显示“Hello XXX,今天是:当前日期”。
或者:
2、练习PL/SQL中各种类型变量的定义和使用。
参见教材p140实验1,以scott模式下的表为例或以用户自定义的表为例,举例练习PL/SQL中各种类型变量的定义和使用(包括标量变量、%type类型变量、自定义记录变量、%rowtype变量)。将所有举例的PL/SQL语句记录下来。
(1)使用标量变量。
(2)使用%type类型的变量。
(3)自定义记录变量。
(4)使用%rowtype变量。
3、练习使用基本流程控制(循环)语句编写PL/SQL代码完成指定的数据处理功能。
(1)利用LOOp循环方式计算1到100之间的偶数项之和(运行结果:2550)。
declare
i number:=1;
v_sum number:=0;
begin
Loop
exitwhen i>100;
i:=i+1;
ifmod(i,2)=0 then
v_sum:=v_sum+i;
endif;
end loop;
end;
/
(2)利用WHILE循环打印出50以内所有能被3整除的整数,以及该整数的个数(运行结果:16)。
(2)利用FOR循环计算并输出S=1!+2!+…+10! (运行结果:4037913)。
declare
var_snumber:=1;
var_sumnumber:=0;
Begin
For a in 1..100loop
For b in 1..a loop
var_s:=var_s*b;
end loop;
var_sum:=var_sum+var_s;
end loop;
end;
/
4、练习使用基本流程控制语句编写PL/SQL代码完成指定的数据处理功能。
(1)题目要求:使用临时变量(&e_no)要求用户输入雇员号,利用IF语句判断该雇员的岗位是否为’CLERK’,如果是则将该雇员的工资提高1%。
答:declare
v_e_no varchar2(80):=&e_no;
begin
ifv_e_no=’ CLERK’then
update emp
set sal = sal*1.01
where job =’CLERK’;
endif;
end;
/
(2)题目要求:使用临时变量(&d_no)要求用户输入部门号,根据输入的部门号,利用使用选择器的case判断:
若是10号部门,则将该部门雇员的补助(对应EMP表中的字段COMM)改为100;若是20号部门,则将该部门雇员的补助改为80;若是30号部门,则将该部门雇员的补助改为50,否则输出“不存在该部门!”
答:declare
v_d_no varchar2(20):=&d_no;
begin
casev_d_no
when 10 then
updateemp
setcomm=100
wheredeptno=’10’;
when20 then
updateemp
setcomm=80
wheredeptno=’20’;
when 30 then
updateemp
setcomm=50
wheredeptno=’30’;
else
dbms_output.put_line(‘不存在该部门!’);
endcase;
end;
/
(3)题目要求:使用临时变量(&e_no)要求用户输入雇员号,根据输入的雇员号,利用不使用选择器的case判断:
若雇员工资小于1000,则将该雇员的补助(对应EMP表中的字段COMM)改为100;若雇员工资在1000到2000,则将该雇员的补助改为80;若雇员工资大于2000,则将该雇员的补助改为50
答:declare
v_e_no number:=&e_no;
begin
case
when v_e_no<1000 then
updateemp
setcomm=100
wheredeptno<1000;
when v_e_no<2000 and v_e_no>1000then
updateemp
setcomm=80
wheredeptno<2000 and dept>1000;
when v_e_no>2000 then
updateemp
setcomm=50
wheredeptno>2000;
endcase;
end;
/
注意:
1)在使用for循环时,中间是“..”而不是“...”;
2)与其他编程语言不同的是,在pl/sql块语句中,赋值语句为“:=”;
3)声明变量时,要注意标识符命名的规范,否则可能会出现错误。标识符命名的规范,详见:点击打开链接
来源:CSDN
作者:圆一点
链接:https://blog.csdn.net/VinWqx/article/details/79846428