1.键盘输入一个年份,判断是否是闰年;

(能被4整除而不能被100整除或者能被100和400同时整除,满足其一即可);

方法1

declare
v_year number(4):=&请输入一个4个字符的年份;
begin
if mod(v_year,4)=0 and mod(v_year,100)0
or mod(v_year,100)=0 and mod(v_year,400)=0 then
dbms_output.put_line('您输入的年份是'||v_year||'是一个闰年');
else
dbms_output.put_line('您输入的年份是'||v_year||'不是闰年');
end if;
end;
方法2

declare
v_year number(4):=&请输入一个4个月份的年份;
begin
if mod(v_year,4)=0 and mod(v_year,100)0 then
dbms_output.put_line('您输入的年份是'||v_year||'是一个闰年');
elsif mod(v_year,100)=0 and mod(v_year,400)=0 then
dbms_output.put_line('您输入的年份是'||v_year||'是一个闰年');
else
dbms_output.put_line('您输入的年份是'||v_year||'不是闰年');
end if;
end;

2.键盘输入一个deptno,将全部门的人的信息打印出来;

方法1

declare
--v_emp emp&rowtype;
v_deptno number(2):=&请输入一个部门编号;
begin
for v_emp in (select * from emp where deptno=v_deptno) loop
dbms_output.put_line(rpad(v_emp.empno, 4,' ')||' , '||
nvl(rpad(v_emp.ename,10,' '),' ')||' , '||
nvl(rpad(v_emp.job,9,' '),' ')||' , '||
nvl(rpad(v_emp.mgr,4,' '),' ')||' , '||
nvl(to_char(v_emp.hiredate,'YYYYMMDD'),' ')||' , '||
nvl(rpad(v_emp.sal,4,' '),' ')||' , '||
nvl(rpad(v_emp.comm,7,' '),' ')||' , '||
nvl(rpad(v_emp.deptno,2,' '),' ')
);
end loop;
end;
执行结果

键盘输入20,输出结果如下


7777 , S_HH%GGH , CLERK , 7902 , , 900 , , 20
7369 , SMITH , CLERK , 7902 , 19801217 , 800 , , 20
7566 , JONES , MANAGER , 7839 , 19810402 , 2975 , , 20
7788 , SCOTT , ANALYST , 7566 , 19870419 , 3000 , , 20
7876 , ADAMS , CLERK , 7788 , 19870523 , 1100 , , 20
7902 , FORD , ANALYST , 7566 , 19811203 , 3000 , , 20

3.键盘输入一个empno,将同部门的人的信息全部打印;

方法1

declare
vno number(4):=&请输入一个员工编号;
begin
for v_emp in (select a.* from emp a,emp b where a.deptno=b.deptno and b.empno=vno) loop
dbms_output.put_line(rpad(v_emp.empno, 4,' ')||' , '||
nvl(rpad(v_emp.ename,10,' '),' ')||' , '||
nvl(rpad(v_emp.job,9,' '),' ')||' , '||
nvl(rpad(v_emp.mgr,4,' '),' ')||' , '||
nvl(to_char(v_emp.hiredate,'YYYYMMDD'),' ')||' , '||
nvl(rpad(v_emp.sal,4,' '),' ')||' , '||
nvl(rpad(v_emp.comm,7,' '),' ')||' , '||
nvl(rpad(v_emp.deptno,2,' '),' ')
);
end loop;
end;
方法2

declare
vno number(4):=&请输入一个员工编号;
begin
for v_emp in (select * from emp where deptno=(select deptno from emp where empno=vno)) loop
dbms_output.put_line(rpad(v_emp.empno, 4,' ')||' , '||
nvl(rpad(v_emp.ename,10,' '),' ')||' , '||
nvl(rpad(v_emp.job,9,' '),' ')||' , '||
nvl(rpad(v_emp.mgr,4,' '),' ')||' , '||
nvl(to_char(v_emp.hiredate,'YYYYMMDD'),' ')||' , '||
nvl(rpad(v_emp.sal,4,' '),' ')||' , '||
nvl(rpad(v_emp.comm,7,' '),' ')||' , '||
nvl(rpad(v_emp.deptno,2,' '),' ')
);
end loop;
end;
执行结果

键盘输入7566,结果如下


7777 , S_HH%GGH , CLERK , 7902 , , 900 , , 20
7369 , SMITH , CLERK , 7902 , 19801217 , 800 , , 20
7566 , JONES , MANAGER , 7839 , 19810402 , 2975 , , 20
7788 , SCOTT , ANALYST , 7566 , 19870419 , 3000 , , 20
7876 , ADAMS , CLERK , 7788 , 19870523 , 1100 , , 20
7902 , FORD , ANALYST , 7566 , 19811203 , 3000 , , 20

4.键盘介入三个值,并按照从大到小依次打印;

方法1

declare
n1 number(10):=&请输入第一个值;
n2 number(10):=&请输入第二个值;
n3 number(10):=&请输入第三个值;
begin
if n1>=n2 and n2>=n3 then
dbms_output.put_line(n1||n2||n3);
elsif n1>=n3 and n3>=n2 then
dbms_output.put_line(n1||n3||n2);
elsif n2>=n1 and n1>=n3 then
dbms_output.put_line(n2||n1||n3);
elsif n2>=n3 and n3>=n1 then
dbms_output.put_line(n2||n3||n1);
elsif n3>=n1 and n1>=n2 then
dbms_output.put_line(n3||n1||n2);
elsif n3>=n2 and n2>=n1 then
dbms_output.put_line(n3||n2||n1);
else
dbms_output.put_line(n1||n2||n3);
end if;
end;
方法2

declare
a number(5) := &请输入第一个数字;
b number(5) := &请输入第二个数字;
c number(5) := &请输入第三个数字; i number(5);

j number(5);

k number(5); begin

select greatest(a, b, c) into i from dual;

select least(a, b, c) into k from dual;

select (a + b + c - i - k) into j from dual;

dbms_output.put_line(i || ',' || j || ',' || k);

end;

5.某公司要根据雇员的职位来加薪,公司决定按下列加薪结构处理:

方法1

declare
v_name varchar2(50):=upper('&输入名字');
v_job varchar2(50);
begin
select job into v_job from emp where ename=v_name;
if v_job = upper('clerk') then
update emp set sal=sal+500 where ename=v_name;
elsif v_job = upper('salseman') then
update emp set sal=sal+1000 where ename=v_name;
elsif v_job = upper('analyst') then
update emp set sal=sal+1500 where ename=v_name;
elsif v_job = upper('otherwise') then
update emp set sal=sal+2000 where ename=v_name;
end if;
commit;
end;

6.计算下面数, 当末项小于0.001时的部分和。

1/(1*2)+1/(2*3)+1/(3*4)+…+1/(n*(n+1))+ ……

for方法

结果:.9696969698


declare
v_num number(20,10):=0;
v_num1 number(20,10):=0;
begin
for i in 1..100000 loop
v_num:=1/(i*(i+1))+v_num;
v_num1:=1/(i*(i+1));
  if v_num1<0.001 then
dbms_output.put_line(v_num);
exit;
end if;

end loop;

end;

loop方法

结果:总和是: .969696969696969696969696969698, n的值是: 32


declare
i number(10):=1;
s number(38,30):=0;
begin
loop
s:=s+(1/(i*(i+1)));
if 1/(i*(i+1))
while方法

结果:
.969696969696969696969696969698
.969696969696969696969696969698


declare
i number(10):=1;
s number(38,30):=0;
begin
while s

7.计算s=12+23+…+N*(N+1),当N=50的值

for方法

结果:44200


declare
v_num number(6):=0;
begin
for i in 1..51 loop
v_num:=i*(i+1)+v_num;
if i=50 then
dbms_output.put_line(v_num);
exit;
end if;
end loop;
end;
loop方法

结果:44200


declare
s number(10) := 0;
i number(2) := 1;
begin
loop
s := s + i*(i + 1);
if i = 50 then
exit;
end if;
i := i + 1;
end loop;
dbms_output.put_line(s);
end;
while方法

44200


declare
i number(10):=1;
s number(10):=0; begin

while i<=50 loop

s:=(i*(i+1))+s;

i:=i+1;

end loop;

dbms_output.put_line(s);

end;

8.编程序求满足不等式 1+32+52+…+N^2>2000的最小N值

loop方法

结果:
2300
23


declare
i number(10) := -1;
s number(20) := 0;
begin
loop
s := s + power(i + 2, 2);
i := i + 2;
if s > 2000 then
exit;
end if;
end loop;
dbms_output.put_line(s);
dbms_output.put_line(i);
end;
while方法

结果:
2300
23


declare
i number(10):=-1;
s number(10):=0;
begin
while s
for方法

结果:
2300
23


declare
s number(10):=0;
i number(10):=-1;
begin
for j in 1..50 loop
s:=s+power(i+2,2);
i:=i+2;
if s>2000 then
exit;
end if;
end loop;
dbms_output.put_line(s);
dbms_output.put_line(i);
end;

9.两重循环,计算S=1!+2!+…+10!

while方法

结果:
4037913


declare
v_num number(15):=1;
v_nums number(15):=0;
i number(2):=1;
begin
while i
loop方法

结果:
4037913


declare
v_num number(15):=1;
v_nums number(15):=0;
i number(2):=1;
begin
loop
v_num:=i*v_num;
v_nums:=v_num+v_nums;
if i=10 then
dbms_output.put_line(v_nums);
exit;
end if;
i:=i+1;
end loop;
end;
for方法

结果:
4037913


declare
v_num number(15):=1;
v_num1 number(15):=0;
begin
for i in 1..10 loop
v_num:=i*v_num;
v_num1:=v_num+v_num1;
if i=10 then
dbms_output.put_line(v_num1);
end if;
end loop;
end;

plsql基础练习题的更多相关文章

  1. Linux基础练习题(二)

    Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...

  2. 珍藏的数据库SQL基础练习题答案

    自己珍藏的数据库SQL基础练习题答案 一,基本表的定义与删除. 题1: 用SQL语句创建如下三张表:学生(Student),课程表(Course),和学生选课表(SC),这三张表的结构如表1-1到表1 ...

  3. Linux基础练习题之(四)

    Linux基础练习题 请详细总结vim编辑器的使用并完成以下练习题 1.复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的 ...

  4. Python之基础练习题

    Python之基础练习题 1.执行 Python 脚本的两种方式 2.简述位.字节的关系 解:8位是一个字节 3.简述 ascii.unicode.utf-8.gbk 的关系 4.请写出 “李杰” 分 ...

  5. shell基础练习题

    shell 基础练习题 1.编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小 #!/bin ...

  6. js基础练习题(1)

    1.字符串 视频教程地址: js基础练习题 1.如何连接两个或者两个以上字符串? var cssname = 'box' var num = 1 var html = '<div class=& ...

  7. 【视频+图文】Java经典基础练习题(三):输入3个整数,并将其由小到大输出

    目录 一.视频讲解 二.思路分析 总结: 三.代码+详解+结果 四.彩蛋 能解决题目的代码并不是一次就可以写好的 我们需要根据我们的思路写出后通过debug模式找到不足再进行更改 多次测试后才可得到能 ...

  8. python基础练习题(九九乘法表)

    又把python捡起来了,动手能力偏弱,决定每日一练,把基础打好! ------------------------------------------------------------------ ...

  9. javaScript基础练习题-下拉框制作

    1.基础回顾 如何让一个段javascript在文档加载后执行,(因为自己忘了,所以顺便复习一下) window.onload = function(){}; <!DOCTYPE html PU ...

随机推荐

  1. mssql sqlserver sql对使用逗号分隔的字符串 转换为数据表的另类方法实现

    转自:http://www.maomao365.com/?p=10739 摘要: 下文讲述在sqlserver 对逗号分隔的字符串转换为数据表的另类方法实现,如下所示: 实验环境:sql server ...

  2. s3c2440裸机-代码重定位、清bss的改进和位置无关码

    1.代码重定位的改进 用ldr.str代替ldrb, strb加快代码重定位的速度. 前面重定位时,我们使用的是ldrb命令从的Nor Flash读取1字节数据,再用strb命令将1字节数据写到SDR ...

  3. java.lang.IllegalStateException: getOutputStream() has already been called 解决办法

    因为在使用的时候没有使用@ResponseBody这个注解,所以才会报上面的异常

  4. pytorch中的pack_padded_sequence和pad_packed_sequence用法

    pack_padded_sequence是将句子按照batch优先的原则记录每个句子的词,变化为不定长tensor,方便计算损失函数. pad_packed_sequence是将pack_padded ...

  5. java超市购物管理系统

    一.概述 1.鹏哥前面有写过java项目超市管理系统项目,传送门 2.收到很多朋友私信给我,也很感谢老铁们的反馈和交流,前面这个项目只是对java基础知识和面向对象的思想练习,但是没有涉及到java如 ...

  6. 解决RubyMine中puts中文显示乱码的问题

    一个简单的ruby代码,puts一个中文,显示乱码 # -*- coding: utf-8 -*- puts "你好" require_relative 'calc.rb' # r ...

  7. ASP.NET Core SignalR:基础概述

    一.简介 ASP.NET Core SignalR 是一个开源代码库,它简化了向应用添加实时 Web 功能的过程. 实时 Web 功能使服务器端代码能够即时将内容推送到客户端. SignalR 的适用 ...

  8. .net Core数据的幕等性

    一.背景 代码实例:https://gitee.com/D_C_L/CurtainEtcAOP.git我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果. 例如: 1. 前 ...

  9. ASP.NET Core MVC配置差异(3.0和2.X)

    https://www.cnblogs.com/lonelyxmas/p/10934388.html net core 2.x MVC配置 public void ConfigureServices( ...

  10. JS基础语法---函数也是一种数据类型

    1. 如何获取某个变量的类型? typeof 2. 函数是有数据类型 ,数据类型:是function function f1() { console.log("我是函数"); } ...