2018.5.24 Oracle下的sqlplus编程 块结构
1.语句结构模板
declare --声明
begin
dbms_output.put_line('Legend Hello world');
end;
2.变量使用 & 是输入符号
declare
c_name constant varchar2(20) :='Legend';
v_num number(3) :='I am';
begin
dbms_output.put_line(v_num ||c_name || &n);
end;
3.rowtype的运用
declare
v_dept dept%rowtype;
begin
select * into v_dept from dept where deptno=&n;
dbms_output.put_line('部门编号:' || v_dept.DEPTNO ||'部门名称:'|| v_dept.DNAME ||'部门位置' || v_dept.LOC);
end;
4.record的使用
declare
type type_emp_dept is record(
v_ename emp.ename%type,
v_sal emp.sal%type,
v_dname dept.dname%type
);
v_record type_emp_dept;
begin
select e.ename,e.sal,d.dname into v_record from emp e,dept d where d.deptno = e.deptno and e.empno=&n;
dbms_output.put_line('员工姓名:'|| v_record.v_ename ||'员工工资:' || v_record.v_sal ||'部门名称:'|| v_record.v_dname);
end;
5.作业练习
/*
提示:获得键盘输入操作,可使用 empno=&名称
*/
1、使用块结构输出:学校:XXX学号:XXX,姓名:XXX,性别:XXX.
declare
v_school varchar2(20) :='桂林理工大学';
v_sid number(20) :=01;
v_sname varchar2(30) :='Legend';
v_sex varchar2(5) :='男';
begin
dbms_output.put_line('学校:' ||v_school || '学号:' || v_sid || '姓名:'|| v_sname ||'性别:' || v_sex);
end;
2、输入员工号,显示员工姓名、工资(使用%type完成)。
declare
v_ename emp.ename%type;
v_sal emp.sal%type;
begin
select ename,sal into v_ename,v_sal from emp where empno=&n;
dbms_output.put_line('姓名:'|| v_ename ||'工资:' || v_sal);
end;
3、输入员工号,显示员工姓名、工资(使用%rowtype完成)。
declare
v_emp emp%rowtype;
begin
select ename,sal into v_emp.ename,v_emp.sal from emp where empno=&n;
dbms_output.put_line('姓名:'||v_emp.ename||'工资:'||v_emp.sal);
end;
4、输入员工姓名,显示员工编号、工资、及工作(使用record完成)
declare
type type_emp is record(
v_empno emp.empno%type,
v_sal emp.sal%type,
v_job emp.job%type
);
v_record type_emp;
begin
select empno,sal,job into v_record from emp where ename='&n';
dbms_output.put_line('员工编号:'||v_record.v_empno || '工资:'||v_record.v_sal||'工作:'||v_record.v_job);
end;
5、输入员工号,显示雇员姓名、工资、个人所得税(税率为0.03)为例(使用record、%type完成).
declare
type type_emp is record(
v_ename emp.ename%type,
v_sal emp.sal%type,
v_money emp.sal%type
);
v_record type_emp;
begin
select ename,sal,sal-sal*0.03 into v_record from emp where empno=&n;
dbms_output.put_line('姓名'||v_record.v_ename ||'工资'|| v_record.v_sal || '个人所得税'||v_record.v_money);
end;
6、输出最高工资员工的名字,工作岗位。
declare
v_name emp.ename%type;
v_job emp.job%type;
begin
select ename,job into v_name,v_job from emp where sal=(select max(sal) from emp);
dbms_output.put_line('员工的名字'||v_name||'工作岗位'||v_job);
end;
7、输出员工中最高工资和最低工资
declare
v_max number(20);
v_min number(20);
begin
select max(sal),min(sal) into v_max,v_min from emp;
dbms_output.put_line('最高工资:'|| v_max ||'最低工资:' || v_min);
end;
8、输入员工的编号,显示员工的姓名,部门名称,工资及工资的级别
declare
type type_emp_dept_salgrade is record(
v_ename emp.ename%type,
v_dname dept.dname%type,
v_sal emp.sal%type,
v_grade salgrade.grade%type
);
v_record type_emp_dept_salgrade;
begin
select e.ename,d.dname,e.sal,s.grade into v_record from emp e ,salgrade s,dept d where e.deptno=d.deptno and e.sal between s.lowsal and s.hisal
and e.empno=&n;
dbms_output.put_line('员工姓名:' || v_record.v_ename || '部门名称:' || v_record.v_dname || '员工工资 : ' || v_record.v_sal ||'工资级别 : ' || v_record.v_grade);
end;
2.第二个中方法不显示会报错
declare
v_name emp.ename%type;
v_job dept.dname%type;
v_sal emp.sal%type;
v_grade salgrade.grade%type;
begin
select e.ename,d.dname,e.sal,s.grade into v_name,v_job,v_sal,v_grade from emp e,dept d,salgrade s where empno=&no
and e.deptno = d.deptno
and e.sal between s.losal and s.hisal;
dbms_output.put_line('员工号:'||v_name ||'工作:'||v_job||'工资:'||v_sal|| '工资级别: '||v_grade);
end;
2018.5.24 Oracle下的sqlplus编程 块结构的更多相关文章
- 2018.6.24 oracle数据库的 事务及视图
第06章 事务及视图 本章内容 事务 视图 1 事务 1.1 什么是事务 事务也称工作单元,是一个或多个SQL语句组成的序列,这些个SQL操作作为一个完整的工作单元要么全部执行,要么全不执行. ...
- 转:Oracle下创建ASM磁盘总结
Oracle下创建ASM磁盘总结 文章转载:https://blog.csdn.net/okhymok/article/details/78791841?utm_source=blogxgwz1 2. ...
- winsock教程- windows下的socket编程(c语言实现)
winsock教程- windows下的socket编程(c语言实现) 使用winsock进行socket 编程 这是一个学习windows下socket编程(c语言)的快速指南.这是因为一下 ...
- Oracle与SQL SERVER编程差异分析(入门)
网上有关Oracle与SQL SERVER性能差异的文章很多,结论往往是让你根据数据量与预算来选择数据库.但实际项目中,特别是使用 .Net 开发的系统,支持以上两种数据库或者更多已经成为Boss的普 ...
- linux 操作系统下c语言编程入门
2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 ...
- linux下使用sqlplus使用上下键显示历史命令
在linux下使用sqlplus没有在windows下方便,既不好用习惯的退格键,也无法通过上键来显示上一条的命令,这里我们使用rlwrap来解决. 1.安装rlwrap [root@toughhou ...
- 【在Windows下进行的编程人员,你真的需要学习下Linux】
从业几年,发现好多编程人员,严重依赖UI工具.对一些命令操作,十分的反感.尤其是从事Windows系统中的程序开发的人员.由于微软对开发工具,编程套件的极限优化.开发出更多的 面向UI的开发工具.从V ...
- python中使用Opencv进行车牌号检测——2018.10.24
初学Python.Opencv,想用它做个实例解决车牌号检测. 车牌号检测需要分为四个部分:1.车辆图像获取.2.车牌定位.3.车牌字符分割和4.车牌字符识别 在百度查到了车牌识别部分车牌定位和车牌字 ...
- oracle下导出某用户所有表的方法
oracle下导出某用户所有表的方法 scott/tiger是用户名和密码,handson是导出的实例名 按用户方式导出数据(owner当中写的是用户名) exp scott/tiger@handso ...
随机推荐
- InfoQ —— 百度搜索速度优化
本篇源自InfoQ —— <百度搜索速度优化> 好多名词不了解... 相关文档下载链接 背景 许霞,毕业于浙江大学.08年加入百度运维部. 本篇讲座主要讲述百度关于速度的优化,包括PC端和 ...
- Windows日志为什么要把它转成Syslog呢?
有的朋友会问,好好的Windows日志为什么要把它转成Syslog呢?呵呵,当Windows服务器比较少的时候,我们是不需要这样做的.但试想如果你管理着成千上百台的Windows机器,你会一台一台的登 ...
- 洛谷P4315 月下“毛景树”
题目描述 毛毛虫经过及时的变形,最终逃过的一劫,离开了菜妈的菜园. 毛毛虫经过千山万水,历尽千辛万苦,最后来到了小小的绍兴一中的校园里. 爬啊爬~爬啊爬毛毛虫爬到了一颗小小的"毛景树&quo ...
- ubuntu下ganglia3.7.2编译安装
一.介绍 ganglia主要包括gmond和gmeta 1.gmond用于收集监测数据,可以发送也可以接收在同一个组播或单播通道上的统计信息.gmond有两个角色,一个是发送者,另一个是接收者.当mu ...
- EasyTouch3.16 初步使用
- $(document).ready(function() { });
l $(document).ready(function() { }); 初始化jsp
- 牛客网Java刷题知识点之插入排序(直接插入排序和希尔排序)、选择排序(直接选择排序和堆排序)、冒泡排序、快速排序、归并排序和基数排序(博主推荐)
不多说,直接上干货! 插入排序包括直接插入排序.希尔排序. 1.直接插入排序: 如何写成代码: 首先设定插入次数,即循环次数,for(int i=1;i<length;i++),1个数的那次不用 ...
- No lease on /目录: File does not exist. [Lease. Holder: DFSClient_NONMAPREDUCE_-2059237550_1, pendingcreates: 8]错误及解决方法
感觉程序员的世界真是一个变幻无常且精彩绝伦的世界,每次跑程序都会发现不一样的问题.今天跑MapReduce程序来统计邮箱次数时遇到了一个问题,明明一样的代码,别人能跑,我却跑不了.我相信,基本做这行的 ...
- js 数据类型及检测
js中基本数据类型有6种number.string.undefined.null.boolean,Symbol (ES6 新增,表示独一无二的值),还有一种数据类型为引用数据类型统称为Object对象 ...
- TypeScript 装饰器
装饰器(Decorators)可用来装饰类,属性,及方法,甚至是函数的参数,以改变和控制这些对象的表现,获得一些功能. 装饰器以 @expression 形式呈现在被装饰对象的前面或者上方,其中 ex ...