plsql基础练习题
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基础练习题的更多相关文章
- Linux基础练习题(二)
Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...
- 珍藏的数据库SQL基础练习题答案
自己珍藏的数据库SQL基础练习题答案 一,基本表的定义与删除. 题1: 用SQL语句创建如下三张表:学生(Student),课程表(Course),和学生选课表(SC),这三张表的结构如表1-1到表1 ...
- Linux基础练习题之(四)
Linux基础练习题 请详细总结vim编辑器的使用并完成以下练习题 1.复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的 ...
- Python之基础练习题
Python之基础练习题 1.执行 Python 脚本的两种方式 2.简述位.字节的关系 解:8位是一个字节 3.简述 ascii.unicode.utf-8.gbk 的关系 4.请写出 “李杰” 分 ...
- shell基础练习题
shell 基础练习题 1.编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小 #!/bin ...
- js基础练习题(1)
1.字符串 视频教程地址: js基础练习题 1.如何连接两个或者两个以上字符串? var cssname = 'box' var num = 1 var html = '<div class=& ...
- 【视频+图文】Java经典基础练习题(三):输入3个整数,并将其由小到大输出
目录 一.视频讲解 二.思路分析 总结: 三.代码+详解+结果 四.彩蛋 能解决题目的代码并不是一次就可以写好的 我们需要根据我们的思路写出后通过debug模式找到不足再进行更改 多次测试后才可得到能 ...
- python基础练习题(九九乘法表)
又把python捡起来了,动手能力偏弱,决定每日一练,把基础打好! ------------------------------------------------------------------ ...
- javaScript基础练习题-下拉框制作
1.基础回顾 如何让一个段javascript在文档加载后执行,(因为自己忘了,所以顺便复习一下) window.onload = function(){}; <!DOCTYPE html PU ...
随机推荐
- robotframework框架 - 利用RequestsLibrary关键字轻松实现接口自动化!
robotframework(后续简称为robot)是一款自动化测试框架,可能做各种类型的自动化测试. 本文介绍通过robotframework来做接口测试. 第一步:安装第三方库,提供接口测试的关键 ...
- java之等待唤醒机制(线程之间的通信)
线程间通信 概念:多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同.比如:线程A用来生成包子的,线程B用来吃包子的,包子可以理解为同一资源,线程A与线程B处理的动作,一个是生产,一个是消 ...
- SpringCloud微服务(04):Turbine组件,实现微服务集群监控
本文源码:GitHub·点这里 || GitEE·点这里 写在前面,阅读本文前,你需要了解熔断器相关内容 SpringCloud微服务:Hystrix组件,实现服务熔断 一.聚合监控简介 1.Dash ...
- 多进程操作-进程队列multiprocess.Queue的使用
一.ipc机制 进程通讯 管道:pipe 基于共享的内存空间 队列:pipe+锁 queue 下面拿代码来实现Queue如何使用: 案例一: from multiprocessing import Q ...
- Spring Boot 2 快速教程:WebFlux 快速入门(二)
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 02:WebFlux 快速入门实践 文章工程: JDK 1.8 ...
- Git - Git简介与客户端安装
简介 Git是目前世界上最先进的分布式版本控制系统(没有之一)! 集中式版本控制系统(CVS/SVN),版本库是集中存放在中央服务器的,而一般工作的时候,用的都是自己的电脑,所以要先从中央服务器取得最 ...
- Spring Boot 2.2.2.RELEASE 版本中文参考文档
写在前面 在我初次接触MongoDB的时候,是为了做一个监控系统和日志分析系统.当时在用Java操作MongoDB数据里的数据的时候,都是在网上查找Demo示例然后完成的功能,相信大家也同样的体会,网 ...
- SSM框架之Mybatis(6)动态SQL
Mybatis(6)动态SQL 1.动态SQL 出现原因:有些时候业务逻辑复杂时,我们的 SQL 是动态变化的,此时在前面的学习中我们的 SQL 就不能满足要求了 1.1.if标签 我们根据实体类的不 ...
- JQuery Deferred对象使用小结
场景描述 如下,打开页面时,获取默认选中的项目,同时也会初始化Combobox下拉框下拉列表数据 问题描述 获取默认选中项目及下拉列表的js函数位于common.js文件,类似如下: // 根据项目类 ...
- Object-C里的类目,延展,协议
1.类目 类目就是为已存在的类添加新的方法.但是不能添加实例变量.比如系统的类,我们看不到他的.m文件,所以没有办法用直接添加方法的方式去实现. @interface NSMutableArray ( ...