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 ...
随机推荐
- 每天学点HTML01
HTML背景 HTML 又叫超文本标记语言 ,诞生于20世纪90年代初 <html> <head><title>demo1</title> </h ...
- 阿里云ubuntu16.04搭建pptpd
一.搭建pptp vpn 需开放1723端口和gre协议 1.阿里云有个安全组需要开放端口才能访问,需添加新的安全组规则. 登陆阿里云服务器管理控制台,添加安全组规则 入/出方向都填写 端口范围为17 ...
- cordova+vue混合式开发App
应要求第一次使用cordova打包了一下vue写的app项目,期间遇到了不少问题,整理一下流程并记录一下常见问题吧. cordova打包项目需要的环境配置啥的就不具体讲啦,百度一下很多教 ...
- JavaWeb包含哪些内容
JavaWeb JavaWeb课程内容涉及:HTML5课程.CSS3.JavaScript.MySQL使用.JDBC连接池.Servlet.JSP.AJAX.jQuery.Bootstrap. 第一部 ...
- Laravel 即时应用的一种实现方式
即时交互的应用 在现代的 Web 应用中很多场景都需要运用到即时通讯,比如说最常见的支付回调,与三方登录.这些业务场景都基本需要遵循以下流程: 客户端触发相关业务,并产生第三方应用的操作(比如支付) ...
- docker容器的学习笔记
目录 Docker入门学习笔记(一) 1. 什么是Docker? 2. Docke的目标 3. Docker通常应用场景 4. Docker的基本组成 补:Docker容器相关技术简介 安装Docke ...
- HashMap数据结构与实现原理解析(干货)
HashMap 数据结构解析: HashMap内部使用hash表(本质是一个数组见图一) HashMap使用hash算法计算得到存放的索引位置,以此来加快查询速度,(比ArrayList还要快) 同样 ...
- Oracle数据库之第一篇
1 : Oracle 简介 : 是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器IP,端口,用户名.密码,点击:连接 (CLIENT/SERVER) ...
- sed 面试题
#oldboy my qq num is 49000448.$ not 4900000448. my god ,i am not oldbey,but clsn!$ #oldboy my name i ...
- JS基础语法---arguments对象伪数组
引入: //计算两个数字的和 function f1(x, y) { return x + y; } //计算三个数字的和 function f2(x, y, z) { return x + y + ...