Oracle经典练习题(很全面)讲解学习
- 格式:doc
- 大小:52.00 KB
- 文档页数:13
Oracle经典练习题及标准答案oracle经典练习sql/*1、选择在部门30中员工的所有信息*/select * from scott.emp where deptno = '30'/*2、列出职位为(MANAGER)的员工的编号,姓名*/select empno, ename from scott.emp where job = 'MANAGER'/*3、找出奖金高于工资的员工*/select * from scott.emp where comm > sal/*4、找出每个员工奖金和工资的总和*/select ename, sal + nvl(comm, 0) from scott.emp/*5、找出部门10中的经理(MANAGER)和部门20中的普通员工(CLERK) */select *from scott.empwhere deptno = '10'and job = 'MANAGER'unionselect *from scott.empwhere job = 'CLERK'and deptno = '20'/*6、找出部门10中既不是经理也不是普通员工,而且工资大于等于2000的员工*/ select *from scott.empwhere job != 'MANAGER'and job != 'CLERK'and sal > 2000/*7、找出有奖金的员工的不同工作*/select distinct(job) from scott.emp where comm is not null /*8、找出没有奖金或者奖金低于500的员工*/select *from scott.empwhere comm is not nulland comm > 500/*9、显示雇员姓名,根据其服务年限,将最老的雇员排在最前面*/select enamefrom scott.emporder by (months_between(sysdate, hiredate) / 12) descselect ename,hiredate from scott.emp order by hiredate/*10、找出每个月倒数第三天受雇的员工*/select * from scott.emp where hiredate = last_day(hiredate) - 2/*11、分别用case和decode函数列出员工所在的部门,deptno=10显示'部门10',deptno=20显示'部门20'deptno=30显示'部门30'deptno=40显示'部门40'否则为'其他部门'*/select ename,case deptnowhen 10 then'部门10'when 20 then'部门20'when 30 then'部门30'when 40 then'部门40'else'其他部门'end 工资情况from scott.empselect ename,decode(deptno,10,'部门10',20,'部门20',30,'部门30',40,'部门40','其他部门') 工资情况from scott.emp/*12、分组统计各部门下工资>500的员工的平均工资*/select avg(sal) from scott.emp where sal > 500 group by deptno/*13、统计各部门下平均工资大于500的部门*/select deptno from scott.emp group by deptno having avg(sal) > 500 /*14、算出部门30中得到最多奖金的员工奖金*/ select max(comm) from scott.emp where deptno = 30/*15、算出部门30中得到最多奖金的员工姓名*/select enamefrom scott.empwhere deptno = 30and comm = (select max(comm) from scott.emp where deptno = 30) /*16、算出每个职位的员工数和最低工资*/select count(ename), min(sal), job from scott.emp group by job/*17、列出员工表中每个部门的员工数,和部门no */select count(ename), deptno from scott.emp group by deptno/*18、得到工资大于自己部门平均工资的员工信息*/select *from scott.emp ewhere sal > (select avg(sal) from scott.emp where e.deptno = deptno)select *from scott.emp e1,(select avg(sal) sals, deptno from scott.emp group by deptno) e2where sal > salsand e1.deptno = e2.deptno/*19、分组统计每个部门下,每种职位的平均奖金(也要算没奖金的人)和总工资(包括奖金) */select avg(nvl(comm,0)), sum(sal + nvl(comm, 0))from scott.empgroup by deptno,job/*20、笛卡尔集*/select * from scott.emp, scott.dept/*21、显示员工ID,名字,直属主管ID,名字*/select empno,ename,mgr,(select ename from scott.emp e1 where e1.empno = e2.mgr) 直属主管名字from scott.emp e2/*22、DEPT表按照部门跟EMP表左关联*/select *fromscott.dept, scott.empwherescott.dept.deptno = scott.emp.deptno(+)/*23、使用此语句重复的内容不再显示了*/select distinct (job) from scott.emp/*24、重复的内容依然显示*/select *from scott.empUNION ALLselect * from scott.emp/*23和24题和22题是一样的*//*25、只显示了两个表中彼此重复的记录。
一、填空1.在多进程Oracle实例系统中,进程分为用户进程、后台进程和服务进程。
2.标准的SQL语言语句类型可以分为:数据定义语句(DDL)、数据操纵语句(DML)和数据控制语句(DCL)。
3.在需要滤除查询结果中重复的行时,必须使用关键字Distinct; 在需要返回查询结果中的所有行时,可以使用关键字ALL。
4.当进行模糊查询时,应使用关键字like和通配符问号(?)或百分号"%"。
5.Where子句可以接收From子句输出的数据,而HA VING子句则可以接收来自WHERE、FROM或GROUP BY子句的输入。
6.在SQL语句中,用于向表中插入数据的语句是Insert。
7.如果需要向表中插入一批已经存在的数据,可以在INSERT语句中使用Select 语句。
8.使用Describe命令可以显示表的结构信息。
9.使用SQL*Plus的Get命令可以将文件检索到缓冲区,并且不执行。
10.使用Save命令可以将缓冲区中的SQL命令保存到一个文件中,并且可以使用Run命令运行该文件。
11.一个模式只能够被一个数据库对象所拥有,其创建的所有模式对象都保存在自己的模式中。
12.根据约束的作用域,约束可以分为表级约束和列级约束两种。
列级约束是字段定义的一部分,只能够应用在一个列上;而表级约束的定义独立于列的定义,它可以应用于一个表中的多个列。
13.填写下面的语句,使其可以为Class表的ID列添加一个名为PK_CLASS_ID 的主键约束。
ALTER TABLE ClassAdd ____________ PK_LASS_ID (Constraint)PRIMARY KEY ________ (ID)14. 每个Oracle 10g数据库在创建后都有4个默认的数据库用户:system、sys、sysman和DBcnmp15. Oracle提供了两种类型的权限:系统权限和对象权限。
Oracle数据库基础题库【含答案】(小编推荐)第一篇:Oracle数据库基础题库【含答案】(小编推荐)一、判断题,正确请写写“T”,错误请写写“F”,1、oracle 数据库系统中,启动数据库的第一步是启动一个数据库实例。
(T)2、Oracle服务器端的监听程序是驻留在服务器上的单独进程,专门负责响应客户机的连接请求。
(F)3、oracle数据库中实例和数据库是一一对应的(非ORACLE并行服务,非集群)。
(T)4、系统全局区SGA 是针对某一服务器进程而保留的内存区域,它是不可以共享的。
(F)5、数据库字典视图ALL_***视图只包含当前用户拥有的数据库对象信息。
(F)8、数据字典中的内容都被保存在SYSTEM表空间中。
(T)9、HAVING后面的条件中可以有聚集函数,比如SUM(),AVG()等,WHERE 后面的条件中也可以有聚集函数。
(F)10、“上海西北京” 可以通过like ‘%上海_’查出来。
(F)11、表空间是oracle 最大的逻辑组成部分。
Oracle数据库由一个或多个表空间组成。
一个表空间由一个或多个数据文件组成,但一个数据文件只能属于一个表空间。
(T)12、表空间分为永久表空间和临时表空间两种类型。
(T)13、truncate是DDL操作,不能 rollback。
(T)14、如果需要向表中插入一批已经存在的数据,可以在INSERT 语句中使用WHERE语句。
(F)15、Oracle数据库中字符串和日期必须使用双引号标识。
(F)16、Oracle数据库中字符串数据是区分大小写的。
(T)17、Oracle数据库中可以对约束进行禁用,禁用约束可以在执行一些特殊操作时候保证操作能正常进行。
(F)18、为了节省存储空间,定义表时应该将可能包含NULL值的字段放在字段列表的末尾。
(T)20、在连接操作中,如果左表和右表中不满足连接条件的数据都出现在结果中,那么这种连接是全外连接。
(T)21、自然连接是根据两个表中同名的列而进行连接的,当列不同名时,自然连接将失去意义。
oracle练习题及答案Oracle练习题及答案Oracle是一种强大的关系数据库管理系统,被广泛应用于企业级应用程序和数据管理中。
为了帮助大家更好地掌握Oracle数据库的知识,以下是一些Oracle练习题及答案,希望能够帮助大家更好地理解和掌握Oracle数据库的知识。
1. 什么是Oracle数据库?Oracle数据库是一种关系数据库管理系统,由美国Oracle公司开发。
它是一种高性能、可靠性高的数据库系统,被广泛应用于企业级应用程序和数据管理中。
2. Oracle数据库的特点有哪些?Oracle数据库具有以下特点:高性能、高可用性、可伸缩性、安全性高、灵活性强、易管理等。
3. 如何创建一个新的数据库用户?在Oracle数据库中,可以使用以下SQL语句来创建一个新的数据库用户:```CREATE USER username IDENTIFIED BY password;```4. 如何查看Oracle数据库中所有的表?可以使用以下SQL语句来查看Oracle数据库中所有的表:```SELECT table_name FROM user_tables;```5. 如何在Oracle数据库中插入一条新的记录?可以使用以下SQL语句来在Oracle数据库中插入一条新的记录:```INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);```6. 如何在Oracle数据库中更新一条记录?可以使用以下SQL语句来在Oracle数据库中更新一条记录:```UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;```7. 如何在Oracle数据库中删除一条记录?可以使用以下SQL语句来在Oracle数据库中删除一条记录:```DELETE FROM table_name WHERE condition;```通过以上Oracle练习题及答案的学习,相信大家对Oracle数据库有了更深入的了解。
Oracle复习资料Oracle表是组成数据库的基本元素,数据库中的数据存储在表中。
区是Oracle分配存储空间和回收存储空间的基本单位。
数据块是关系表Oracle读写数据库的基本单位。
主要由行和列构成。
每一列用来保存关系的属性,每一行存储了关系的元组CS模式主要由客户应用程序、服务器管理程序和中间件三个部分组成。
B/S由客户端、应用程序服务器和数据库服务器组成Oracle数据库的存储结构分为物理存储结构和逻辑存储结构,这两种存储结构既相互独立又相互联系数据库的物理存储结构由数据文件、重做日志、控制、归档日志初始化参数文件、密码文件组成。
数据文件的单位的两种方式:字节和数据快数据文件特点:数据文件的扩展名是.dbf1:每一个数据文件只与一个数据库相联系。
2:一个表空间可包含一个或多个数据文件,一个数据文件只能属于一个表空间。
3:当数据库容量越界时,数据文件能够自动扩展。
Oracle提供了三种扩展数据文件存储空间的方法:1:在当前表空间中增加新的数据文件,新数据将被存储在新的数据文件中。
2:手工扩展表空间中的数据文件,在原来的存储空间的基础上,增加一定数量的存储空间。
3:激活数据文件的自动扩展功能,数据库服务器将自动为数据文件分配新的存储空间。
控制文件的功能是记录数据库的结构和状态在一个数据库中至少需要一个控制文件,Oracle建议至少创建两个控制文件,并将它们分别存储在两个磁盘上。
重做日志文件用于记录对数据库的所有修改信息,包括用户对数据的修改,以及管理员对数据库结构的修改。
重做日志文件保证了数据库的安全和数据库的备份与恢复。
数据库的逻辑结构由表空间、段、区和数据块组成表空间是数据库的逻辑划分,一个数据库在逻辑上由多个表空间组成。
引入表空间的优点:1将系统数据和用户数据分开,有利于保护重要数据;2可以限制用户对磁盘存储空间的使用;3将临时数据与用户数据分开,从而减少用户数据存储区的碎片,提高数据库的性能;4能够将不同类型的数据分别存放在不同的磁盘上,以减少磁盘的读写冲突。
Oracle练习day04(附答案及多种解法)day01(附答案)(由于内容太过于简单上传没有被百度文库通过,于是和day04一起上传上来)1.查询职员表中工资大于1600的员工姓名和工资。
select ename,sal from emp where sal>1600;2.查询职员表中员工号为7369的员工的姓名和部门号码。
select ename,deptno from emp where empno=7369;3.选择职员表中工资不在4000到5000的员工的姓名和工资。
select ename,sal from emp where sal not between 4000 and 5000;4.选择职员表中在20和30号部门工作的员工姓名和部门号。
select ename,deptno from emp where deptno in(20,30);5.选择职员表中员工姓名的第三个字母是A的员工姓名。
select ename from emp where ename like '__A%';6.列出部门表中的部门名字和所在城市。
select dname,loc from dept;7.显示出职员表中的不重复的岗位job。
select distinct job from emp;8连接职员表中的职员名字、职位、薪水,列之间用逗号连接,列头显示成OUT_PUT(提示:使用连接符||、别名)。
select '姓名:' || ename || ',职位' || job || ',薪水' || sal OUT_PUT from emp9查询职员表emp中员工号、姓名、工资,以及工资提高百分之20%后的结果。
select empno,ename,sal,sal*1.2 sals from emp;10列出除了ACCOUNT部门还有哪些部门。
Oracle基础练习题及答案(多表查询1)(共5篇)第一篇:Oracle基础练习题及答案(多表查询1)利用scott用户自带的四张表完成如下作业:1.列出至少有一个员工的所有部门select b.deptno,b.dname from emp a,dept b where a.deptno=b.deptno group by b.deptno,b.dname having count(*)>=1;2.列出薪金比SMITH高的所有员工select * from emp where sal>(select sal from emp where ename='SMITH');3.列出所有员工的姓名及其直接上级领导的姓名select a.ename,b.ename “leader” from emp a,emp b wherea.mgr=b.empno;4.列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称select a.empno,a.ename,a.hiredate,c.dname from emp a,emp b,dept c where a.mgr=b.empno and a.deptno=c.deptno anda.hiredate5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门select b.dname,a.* from emp a,dept b wherea.deptno(+)=b.deptno;6.列出所有CLERK(办事员)的姓名,及其部门名称,部门人数select aa.ename,aa.job,bb.dname,(select count(a.deptno)from emp a,dept b where a.deptno=b.deptno and b.dname=bb.dname group by a.deptno)from emp aa,dept bb where aa.deptno(+)=bb.deptno and aa.job='CLERK';7.列出最低薪金大于1500的各种工作及从事此工作的全部雇员人数select a.job,min(sal),count(ename)from emp a,dept b wherea.deptno=b.deptno having min(sal)>1500 group by a.job;8.列出在部门SALES(销售部)工作的员工的姓名,假定不知道销售部的部门编号。
oracle练习题(打印版)### Oracle数据库练习题#### 一、选择题1. Oracle数据库中,哪个命令用于创建表?- A. CREATE TABLE- B. CREATE DATABASE- C. DROP TABLE- D. ALTER TABLE2. 以下哪个不是Oracle数据库的数据类型?- A. NUMBER- B. CHAR- C. DATE- D. IMAGE3. 在Oracle数据库中,哪个命令用于删除表?- A. DELETE FROM- B. DROP TABLE- C. REMOVE TABLE- D. ERASE TABLE4. Oracle数据库中,如何查看当前用户?- A. SELECT USER FROM DUAL;- B. SELECT CURRENT_USER FROM DUAL;- C. SELECT USERNAME FROM ALL_USERS;- D. SELECT CURRENT_USER FROM ALL_USERS;5. 以下哪个命令用于在Oracle数据库中创建索引?- A. CREATE INDEX- B. CREATE KEY- C. CREATE CONSTRAINT- D. CREATE UNIQUE#### 二、填空题1. 在Oracle数据库中,使用____命令可以查看表结构。
2. Oracle数据库中,使用____命令可以查看当前数据库的所有表。
3. 要删除Oracle数据库中的行,可以使用____命令。
4. Oracle数据库中,____用于存储二进制数据。
5. Oracle数据库中,____命令用于查看数据库中所有的索引。
#### 三、简答题1. 描述Oracle数据库中事务的ACID属性。
2. 解释Oracle数据库中的锁定机制。
3. 说明Oracle数据库中视图的作用。
#### 四、操作题1. 创建一个名为`Employees`的表,包含以下字段:- `EmployeeID` NUMBER(10) PRIMARY KEY,- `FirstName` VARCHAR2(50),- `LastName` VARCHAR2(50),- `HireDate` DATE,- `Salary` NUMBER(10, 2),- `DepartmentID` NUMBER(10).2. 向`Employees`表中插入以下数据:- `EmployeeID`: 1001, `FirstName`: 'John', `LastName`:'Doe', `HireDate`: '2023-01-01', `Salary`: 70000,`DepartmentID`: 101.- `EmployeeID`: 1002, `FirstName`: 'Jane', `LastName`:'Smith', `HireDate`: '2023-02-15', `Salary`: 50000,`DepartmentID`: 102.3. 编写一个查询,显示所有员工的姓名和工资,按工资从高到低排序。
Oracle基本操作练习题使用表:员工表(emp):(empno NUMBER (4)notnull,--员工编号,表示唯一ename VARCHAR2 (10),--员工姓名job VARCHAR2 (9),--员工工作职位mgr NUMBER (4),--员工上级领导编号hiredate DATE,--员工入职日期salNUMBER (7,2),--员工薪水comm NUMBER (7,2),--员工奖金dept no NUMBER (2)—员工部门编号)部门表(dept):(deptno NUMBER (2)notnull,--部门编号dname VARCHAR2 (14),--部门名称locVARCHAR2 (13)—部门地址)说明:增删改较简单,这些练习都是针对数据查询,查询主要用到函数、运算符、模糊查询、排序、分组、多变关联、子查询、分页查询等。
建表脚本(根据需要使用): 建表脚本.txt练习题:1. 找出奖金高于薪水60%的员工信息。
SELECT * FROM emp WHERE comm>sal*0.6;2. 找出部门10中所有经理(MANAGER )和部门20中所有办事员(CLERK)的详细资料。
SELECT * FROM emp WHERE (JOB二'MANAGER' AND DEPTNO=10) OR (JOB二'CLERK' AND DEPTNO=20);3. 统计各部门的薪水总和。
SELECT dept no,SUM(sal) FROM emp GROUP BY dept no;4. 找出部门10中所有理(MANAGER ),部门20中所有办事员(CLERK)以及既不是经理又不是办事员但其薪水大于或等 2000的所有员工的详细资料。
SELECT * FROM emp WHERE (JOB二'MANAGER' AND DEPTNO=10) OR (JOB 二'CLERK' AND DEPTNO=20) OR (JOB NOT IN('MANAGER','CLERK') ANDSAL>2000);5. 列出各种工作的最低工资。
Oracle基本操作练习题使用表:员工表(emp):(empnoN UMBER(4)notnul l,--员工编号,表示唯一enameV ARCHA R2(10),--员工姓名job VARCHA R2(9),--员工工作职位mgrNUM BER(4),--员工上级领导编号hireda teDAT E,--员工入职日期salNUM BER(7,2),--员工薪水commNU MBER(7,2),--员工奖金deptno NUMBE R(2)—员工部门编号)部门表(dept):(deptno NUMBE R(2)notnul l,--部门编号dnameV ARCHA R2(14),--部门名称locVAR CHAR2(13)—部门地址)说明:增删改较简单,这些练习都是针对数据查询,查询主要用到函数、运算符、模糊查询、排序、分组、多变关联、子查询、分页查询等。
建表脚本.txt建表脚本(根据需要使用):练习题:1.找出奖金高于薪水60%的员工信息。
SELECT * FROM emp WHEREcomm>sal*0.6;2.找出部门10中所有经理(MANAGE R)和部门20中所有办事员(CLERK )的详细资料。
SELECT* FROM emp WHERE(JOB='MANAGE R' AND DEPTNO=10) OR (JOB='CLERK' AND DEPTNO=20);3.统计各部门的薪水总和。
SELECT deptno,SUM(sal) FROM emp GROUPBY deptno;4.找出部门10中所有理(M ANAGE R),部门20中所有办事员(C LERK 以及既不是经理又不是办事员但其薪水大于或等2000的所有员工的)详细资料。
O r a c l e经典练习题(很全面)Oracle 经典练习题一.创建一个简单的PL/SQL程序块1.编写一个程序块,从emp表中显示名为“SMITH”的雇员的薪水和职位。
declarev_emp emp%rowtype;beginselect * into v_emp from emp where ename='SMITH';dbms_output.put_line('员工的工作是:'||v_emp.job||' ;他的薪水是:'||v_emp.sal);end;2.编写一个程序块,接受用户输入一个部门号,从dept表中显示该部门的名称与所在位置。
方法一:(传统方法)declarepname dept.dname%type;ploc dept.loc%type;pdeptno dept.deptno%type;beginpdeptno:=&请输入部门编号;select dname,loc into pname,ploc from dept wheredeptno=pdeptno;dbms_output.put_line('部门名称: '||pname||'所在位置:'||ploc);exception –异常处理when no_data_foundthen dbms_output.put_line('你输入的部门编号有误!!');when othersthen dbms_output.put_line('其他异常');end;方法二:(使用%rowtype)declareerow dept%rowtype;beginselect * into erow from dept where deptno=&请输入部门编号;dbms_output.put_line(erow.dname||'--'||erow.loc); exceptionwhen no_data_foundthen dbms_output.put_line('你输入的部门号有误!!!');when othersthen dbms_output.put_line('其他异常');end;3.编写一个程序块,利用%type属性,接受一个雇员号,从emp表中显示该雇员的整体薪水(即,薪水加佣金)。
declarepempno emp.empno%type;totalSal emp.sal%type;beginpempno:=&请输入员工编号;select sal+nvl(comm,0) into totalSal from emp whereempno=pempno;dbms_output.put_line('该员工总共薪水'||totalSal);exceptionwhen no_data_foundthen dbms_output.put_line('你输入的员工编号有误!!');when othersthen dbms_output.put_line('其他异常');end;4.编写一个程序块,利用%rowtype属性,接受一个雇员号,从emp表中显示该雇员的整体薪水(即,薪水加佣金)。
declareerow emp%rowtype;beginselect * into erow from emp where empno=&请输入员工编号;dbms_output.put_line(erow.sal+nvl(m,0)); exceptionwhen no_data_foundthen dbms_output.put_line('你输入的员工编号有误!!');when othersthen dbms_output.put_line('其他异常');end;5.某公司要根据雇员的职位来加薪,公司决定按下列加薪结构处理:Designation Raise-----------------------Clerk 500Salesman 1000Analyst 1500Otherwise 2000编写一个程序块,接受一个雇员名,从emp表中实现上述加薪处理。
declareerow emp%rowtype;beginselect * into erow from emp where ename='&name';if erow.job='Clerk'thenupdate emp set sal=sal+500where empno=erow.empno;elsif erow.job='Salesman'thenupdate emp set sal=sal+1000where empno=erow.empno;elsif erow.job='Analyst'thenupdate emp set sal=sal-1500where empno=erow.empno;elseupdate emp set sal=sal+2000where empno=erow.empno;end if;commit;exceptionwhen no_data_foundthen dbms_output.put_line('你输入的员工编号有误!!'); when othersthen dbms_output.put_line('其他异常');end;6.编写一个程序块,将emp表中雇员名全部显示出来。
cursor cs is select ename from emp;beginfor erow in cs loopdbms_output.put_line(erow.ename);end loop;end;7.编写一个程序块,将emp表中前5人的名字显示出来。
方式一:declarecursor cs is select t.* from (select e.ename,rownum rm from emp e)t where t.rm between1and6;beginfor erow in cs loopdbms_output.put_line(erow.ename);end loop;end;方式二:--方式二declarecursor cs is select ename from emp;i number :=1;beginfor erow in cs loopdbms_output.put_line(erow.ename);i:=i+1; --迭代exit when i>5; --退出条件end loop;end;8.编写一个程序块,接受一个雇员名,从emp表中显示该雇员的工作岗位与薪水,若输入的雇员名不存在,显示“该雇员不存在”信息。
declarepjob emp.job%type;totalsal emp.sal%type;select job,sal into pjob,totalsal from emp whereename='&请输入员工姓名';dbms_output.put_line(pjob ||'----' ||totalsal);exceptionwhen no_data_found thendbms_output.put_line('你输入的员工姓名有误!!');end;9.接受两个数相除并且显示结果,如果第二个数为0,则显示消息“除数不能为0”。
declarenum1 float;num2 float;res float;my_exception Exception;beginnum1:=&被除数;num2:=&除数;res:=num1/num2;raise my_exception;exceptionwhen my_exception thendbms_output.put_line(res);when others thendbms_output.put_line('除数不能为0');end;二.声明和使用游标------ 游标:(集合) ,处理返回多行记录的问题-- 声明游标--语法: cursor 游标名 is DQL;-- 遍历游标/*1.打开游标, open 游标名;2.从游标中提取一行的记录:fetch 游标名 into 变量名,...;3.使用循环, exit when 游标名%notfound;4.关闭游标, close 游标名;1.通过使用游标来显示dept表中的部门名称。
declarecursor co is select dname from dept;beginfor vname in coloopdbms_output.put_line(vname.dname);end loop;end;2.使用For循环,接受一个部门号,从emp表中显示该部门的所有雇员的姓名,工作和薪水。
declarecursor c_emp is select * from emp where deptno=&请输入部门号;beginfor erow in c_emp loopdbms_output.put_line(erow.ename ||' ' ||erow.job ||' '||erow.sal);end loop;exceptionwhen no_data_found thendbms_output.put_line('输入的部门编号有误');end;3.使用带参数的游标,实现第2题。
declarecursor c_cs(c_deptno number) is select * from emp wheredeptno=c_deptno;v_deptno number;beginv_deptno:=&请输入部门编号;for erow in c_cs(v_deptno) loopdbms_output.put_line(erow.ename ||' ' ||erow.job ||' '||erow.sal);end loop;exceptionwhen no_data_found thendbms_output.put_line('输入的部门编号有误');end;4.编写一个PL/SQL程序块,从emp表中对名字以“A”或“S”开始的所有雇员按他们基本薪水的10%给他们加薪。