oracle-存储过程练习题

合集下载

oracle-存储过程练习题

oracle-存储过程练习题

1.创建用户kaifa (密码亦为kaifa)并分配connect,create table,resource 权限。

tCREATE user KAIFA IDENTIFIED BY KAIFA DEFAULT TABLESPACE HOSDATATEMPOARY TABLESPACE TEMPDATA;GRANT CONNECT . CREATE TABLE • RESOURCE TO KAIFA2.在做报表统计时,需要根据报表日期和币种从概要表中查询本期余额。

其中币种代码如下:--RMB 人民币--CNY 本位币—USD 外币折美元如果币种为RMB,则取出人民币余额作为本期余额;为CNY,则取本位币余额;为USD 则取外币折美元余额。

请编写一个函数GetCurrBal (qrp.rq IN VARCHAR2. ―报表日期qrp_code IN VARCHAR2 —币种)CREATE OR REPLACE FUNCTION GetCurrBal(Vqrp_rq Date •—报表日期Vqrp.code VARCHAR2 一币种)RETURN NUMBERISVAMOUNT NUMBER :'DATE Date;BEGINSELECT ACCOUNTING.DATE INTO VDATE FROM CCB_GYBWhere ACCOUNTING_DATE = Vqrp_rq;IF Vqrp_code = 'RMB* THENSELECT RMB_YTD_BA1-ANCE INTO VAMOUNT FROM CCB_GYB WHERE Vqip_code二r RMB*AND ACCOUNTING_DATE- VDATE;ELSEIF Vqrp.code = 'CNT THENSELECT CNY_YTD_BALANCII INTO VAMOUNT FROM CCB_GYB WHERE Vqip_code二'CNY';ELSESELECT USD_YTD_BALANCE INTO VAMOUNT FROM CCB_GYB WHERE Vqrp_code-END IF :END IF ;COMMIT;RETURN VAMOUNT;END;■一对多行处理.用游标一-多单行处理,用SELECT实现此功能,并能在sqlplus里调用。

Oracle 考试试题(带答案)

Oracle 考试试题(带答案)

a) b) c) d) 参考答案
OracleHOME_NAMETNSListener OracleServiceSID OracleHOME_NAMEAgent OracleHOME_NAMEHTTPServer
B
9) 在 Oracle 中创建用户时,若未提及 DEFAULT TABLESPACE 关键字,则 Oracle 就将()表空间分配 给用户作为默认表空间。。
DATEPART EXTRACT TO_CHAR TRUNC
bc
5) 在Oracle中,有一个教师表teacher的结构如下: ID NUMBER(5) NAME VARCHAR2(25) EMAIL VARCHAR2(50) 下面哪个语句显示没有Email地址的教师姓名()。
a) b) c) d) 参考答案
a) b) c) d) 参考答案
OracleHOME_NAMETNSListener OracleServiceSID OracleHOME_NAMEAgent OracleHOME_NAMEHTTPServer
a
8) 在Windows操作系统中,Oracle的()服务是使用 iSQL*Plus必须的。
A
12) 在Oracle中,下面用于限制分组函数的返回值的子句是 ()。
a) WHERE b) HAVING c) ORDER BY d) 无法限定分组函数的返回值
参考答案 b
13) 在Oracle中,有一个名为seq的序列对象,以下语句能返 回序列值但不会引起序列值增加的是()。
a) b) c) d) 参考答案
%NOTFOUND %FOUND %ROWTYPE %ISOPEN %ROWCOUNT
c
15) 在Oracle中,当控制一个显式游标时,下面哪种命令包 含INTO子句()。

存储过程练习题

存储过程练习题

存储过程练习题存储过程是一种数据库对象,可以封装一系列的SQL语句并在数据库中进行存储和执行。

它在提高数据库性能和简化开发过程方面具有重要作用。

本文将从实际问题出发,提供一些存储过程练习题,帮助读者巩固并加深对存储过程的理解。

1. 创建一个存储过程,根据指定日期的订单数量进行统计,并将结果返回。

创建存储过程:DELIMITER //CREATE PROCEDURE OrderCount(IN orderDate DATE, OUT quantity INT)BEGINSELECT COUNT(*) INTO quantity FROM Orders WHERE order_date = orderDate;END //DELIMITER ;调用存储过程:CALL OrderCount('2022-01-01', @quantity);SELECT @quantity;该存储过程通过接收一个订单日期作为输入参数,统计对应日期的订单数量,并将结果存储在输出参数中。

2. 创建一个存储过程,根据产品名称模糊查询对应的订单信息,并按照订单日期降序返回。

创建存储过程:DELIMITER //CREATE PROCEDURE SearchOrders(IN productName VARCHAR(100))BEGINSELECT * FROM Orders JOIN Products ON Orders.product_id = Products.idWHERE LIKE CONCAT('%', productName, '%')ORDER BY order_date DESC;END //DELIMITER ;调用存储过程:CALL SearchOrders('手机');该存储过程通过接收一个产品名称作为输入参数,根据该名称模糊查询对应订单的详细信息,并按照订单日期降序返回结果集。

OracleDBA认证考试存储管理试题及答案

OracleDBA认证考试存储管理试题及答案

OracleDBA认证考试存储管理试题及答案Oracle DBA认证考试存储管理试题及答案Q. 1 : Oracle immediately re-uses the space assigned to row-directory portion of the data block once you delete the corresponding rows.1. True2. False2Q. 2 : Which of the following three portions of a data block are collectively called as Overhead.1. table directory, row directory and row data2. data block header, table diretory and free space3. table directory, row directory and data blcok header4. data block header, row data and row header3Q. 3 : Which portion of the data block contains table or index data1. table directory2. row directory3. overhead4. row data4Q. 4 : What are the two space management parameters for controling the use of free space in a data block1. INITIAL and NEXT2. PCTFREE and PCTUSED3. TABLESPACE and STORAGE4. free space cannot be controlled at block level2Q. 5 : The maximum number of transactions that a block can support is1. 1002. 2553. 10004. unlimited2Q. 6 : what is PCTFREE1. A space management parameter which sets aside that much percentage of memory in the data block for future update of existing rows.2. A space management parameter which determines the minimum percentage of a block that can be used for row data plus overhead.3. A space management parameter which tells Oracle that the block is available for inserts after the percentage of used memory falls below certain percentage.4. all of them1Q. 7 : What is the default value of NEXT parameter1. 1 block2. 2 blocks3. 5 blocks4. 100 blocks3Q. 8 : Which parameter reserves the more space for future updates1. high PCTINCREASE2. high PCTFREE3. high INITIAL2Q. 9 : PCTFREE and PCTUSED together should not exceed1. 1002. 503. 254. 101Q. 10 : Row migration is a result of1. not enough space in a block for new rows.2. not enough memory for sorts3. not enough space for updates in the current block4. all of them3Q. 11 : Frequent deallocation of extents result in1. truncated segments2. block fragmentation3. truncated tablespaces4. tablespace fragmentation4Q. 12 : Which background process coalesce the fragmented space1. SMON2. PMON3. DBWR4. LGWR1Q. 13 : Row migration is a result of1. high PCTFREE2. low PCTFREE4. low PCTUSED 2。

oracle练习题及答案

oracle练习题及答案

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数据库中,存储过程是一系列的SQL语句和逻辑操作组合在一起,被封装为一个单元,可以在应用程序中被调用。

存储过程在数据库开发中起到了重要的作用,因此对于从事数据库开发或相关职位的人员来说,掌握存储过程的知识和技巧是非常重要的。

在面试中,面试官可能会问一些与Oracle存储过程相关的问题,下面是一些常见的存储过程面试题目及其答案。

1. 什么是存储过程?答:存储过程是一种数据库对象,可以被调用执行。

它是一段预编译的、可重复使用的代码块,由SQL语句、流程控制语句和一些特殊的PL/SQL语句组成。

2. 存储过程有哪些优点?答:存储过程具有以下优点:- 提高数据库性能:存储过程在服务器端执行,可以减少网络传输的开销,提高响应速度。

- 提高安全性:存储过程可以对数据进行封装,只暴露必要的接口,减少了SQL注入的风险。

- 提高可维护性:存储过程可以被重复调用,避免了重复编写SQL语句的工作,方便维护和管理。

- 支持事务控制:存储过程可以包含事务处理逻辑,可以确保数据的完整性和一致性。

3. 存储过程和函数有什么区别?答:存储过程和函数都是一段预编译的代码块,但有以下区别:- 函数必须返回一个值,而存储过程可以不返回值。

- 函数可以在SQL语句中直接调用,而存储过程需要使用CALL语句显式地调用。

- 存储过程可以有输出参数,而函数只能有输入参数和返回值。

- 存储过程可以包含事务处理逻辑,而函数不支持事务控制。

4. 如何创建一个存储过程?答:以下是创建一个简单存储过程的示例:```CREATE OR REPLACE PROCEDURE calculate_salary (employee_id IN NUMBER, salary OUT NUMBER)ISBEGINSELECT salary INTO salary FROM employees WHERE employee_id = employee_id;salary := salary + 1000;END;/```5. 如何调用存储过程?答:可以使用CALL语句或者直接调用存储过程的名字来执行存储过程。

Oracle 考试试题(带答案)

Oracle 考试试题(带答案)
--显示结果(1000)条
session2 ---------------------------------------
T2 delete from t where rownum <=100;
T3
begin
delete from t where rownum <=100;
commit;
end;
/
T4 truncate table t;
select seq.ROWNUM from dual; select seq.ROWID from dual; select seq.CURRVAL from dual; select seq.NEXTVAL from dual;
c
14) 在Oracle中,游标都具有下列属性,除了()。
a) b) c) d) e) 参考答案
SELECT name FROM teacher WHERE email = NULL;
SELECT name FROM teacher WHERE email <> NULL;
SELECT name FROM teacher WHERE email IS NULL;
SELECT name FROM teacher WHERE email IS NOT NULL;
a) b) c) d) 参考答案
归档日志运行模式 RECOVER命令 恢复管理器(RMAN) Export和Import工具
d
18 有表一的查询结果如下,该表为学生成绩表
select id,grade from student_grade
ID
GRADE
--------
-----------
1

数据库存储过程练习附答案

数据库存储过程练习附答案

存储过程、触发器练习1、在学生选课数据库中,创建一存储过程deptmale,查询指定系的男生人数,其中系为输入参数,人数为输出参数。

create proc p_dept@dept char(20),@mannum int outputasselect @allcre=count(sno) from studentwhere sdept=@dept and ssex='男'declare @num intexec p_dept '计算机系',@num outputprint @num2、在s_c数据库中,创建一个存储过程totalcredit,根据输入的学生姓名,计算其总学分。

(使用输出参数)。

并执行该存储过程。

create proc p_cou@name char(10),@allcre int outputasselect @allcre=sum(ccredit)from student,course,scwhere student.sno=sc.sno and o=oand sname=@name group by sc.snodeclare @asum intexec p_cou '刘晨',@asum outputprint @asum3、创建一更新触发器upd_grade,设置sc表的grade字段不能被更新,并显示信息“学生成绩不能被修改,请与教务处联系”。

CREATE TRIGGER mes_scON scFOR UPDATEASIF UPDATE(grade)BEGINROLLBACK TRANPRINT '学生成绩不能被修改,请与教务处联系'END4、创建一个insert触发器uninsertstu,当在student表中插入一条新纪录时,如果是“计算机系”的学生,则撤销该插入操作,并返回“此系人数已满,不能再添加”信息。

《oracle数据库》练习题4

《oracle数据库》练习题4

练习题41、 选择题(每题1分,共20分)1. 有数据”oracle”分别存放到char(10)和varchar2(10)类型的字段中,其实际存储长度为( )A、 10 10B、66C、 10 6D、 6 102.ORACLE数据库物理结构包括以下三种文件,以下不属于的是( )A、系统文件B、日志文件C、数据文件D、控制文件3.下面四个语句中哪一个是正确的?( )A、 SELECT * , ENAME FROM EMP;B、 DELETE * FROM EMP;C、 SELECT DISTINCT EMPNO ,HIREDATE FROM EMP;D、 SELECT ENAME|SAL AS “name” FROM EMP ;4.更改oracle用户HR,使其变为不可用(锁定)状态( )A、 UPDATE USER HR ACCOUNT DISABLE ;B、 UPDATE USER HR ACCOUNT LOCK ;C、 ALTER USER HR ACCOUNT LOCK ;D、 ALTER USER HR ACCOUNT DISABLE ;5.在Oracle中,使用下列的语句:CREATE PUBLIC SYNONYM parts FOR Scott.inventory; 完成的任务是( )。

A、 需要给出schema被除去的对象名B、 指定了新的对象权限C、 指定了新的系统权限D、给Scott.inventory对象创建一个公用同义词parts6. ORACLE中,用来判断列值是否为空的操作符是( )A、 ==NULLB、IS NULLC、 AS NULLD、 NULLIS7.在CUSTOMER中有一列为单价(PRICE),写一个SELECT命令显示所有单价在500以上的查询语句( )A、SELECT * FROM CUSTOMER WHERE PRICE MORE THAN 500;B、SELECT * FROM CUSTOMER WHERE PRICE BETWEEN 500 AND *;C、SELECT * FROM CUSTOMER WHERE PRICE LIKE '%500%';D、SELECT * FROM CUSTOMER WHERE PRICE>=500;8. 下列哪个命令是用于ORACLE中数据导出的 ( )A、expB、impC、inputD、output9.以下运算结果不为空值的是()A、12+NULLB、60*NULLC、NULL‖’NULL’D、12/(60+NULL)10.若用户要连接数据库,则该用户必须拥有的权限是()A、create tableB、create indexC、create sessionD、connect11.授予删除任何表的系统权限(DROP ANY TABLE)给user1,并使其能继续授该权限给其他用户,以下正确的SQL语句是()A、Grant drop any table to user1;B、Grant drop any table to user1 with admin option;C、Grant drop table to user1;D、Grant drop any table to user1 with check potion;12.要以自身的模式创建私有同义词,用户必须拥有( )系统权限。

orcl期末试题及答案

orcl期末试题及答案

orcl期末试题及答案一、选择题(每题2分,共20分)1. ORCL数据库中,以下哪个选项不是数据类型?A. NUMBERB. VARCHAR2C. DATED. FILE答案:D2. 在ORCL数据库中,创建表的语句是:A. CREATE DATABASEB. CREATE TABLEC. CREATE INDEXD. CREATE VIEW答案:B3. 下列哪个命令用于查询表中的数据?A. SELECTB. INSERTC. UPDATED. DELETE答案:A4. ORCL数据库中,用于添加数据的语句是:A. SELECTC. UPDATED. DELETE答案:B5. 在ORCL数据库中,以下哪个选项是事务控制语句?A. COMMITB. ROLLBACKC. SAVEPOINTD. ALL OF THE ABOVE答案:D6. ORCL数据库中,用于删除表的语句是:A. DROP TABLEB. REMOVE TABLEC. DELETE TABLED. ERASE TABLE答案:A7. 在ORCL数据库中,以下哪个选项不是索引类型?A. B-treeB. BitmapC. HashD. List答案:D8. ORCL数据库中,用于修改数据的语句是:B. INSERTC. UPDATED. DELETE答案:C9. 在ORCL数据库中,以下哪个选项是数据完整性约束?A. PRIMARY KEYB. FOREIGN KEYC. UNIQUED. ALL OF THE ABOVE答案:D10. ORCL数据库中,用于删除数据的语句是:A. SELECTB. INSERTC. UPDATED. DELETE答案:D二、填空题(每题2分,共20分)1. ORCL数据库中,数据表的行称为________。

答案:记录2. 在ORCL数据库中,用于连接两个表的语句是________。

答案:JOIN3. ORCL数据库中,用于创建视图的语句是________。

Oracle经典练习题(很全面)

Oracle经典练习题(很全面)

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 where deptno=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表中显示该雇员的整体薪水(即,薪水加佣金)。

Oracle存储过程练习题

Oracle存储过程练习题

Oracle存储过程练习题1.1.创建⼀个过程,能向dept表中添加⼀个新记录。

(in参数)创建过程create or replace procedure insert_dept( num_dept in number, var_ename in varchar2, var_loc in varchar2 ) isbegininsert into deptvalues(num_dept,var_ename,var_loc);commit;end insert_dept;/调⽤begininsert_dept(79,'技术部','武汉');end;/2.从scott.emp表中查询给定职⼯(提⽰:使⽤&来输⼊员⼯编号)的职⼯姓名和⼯资。

(要求:利⽤out模式的参数将值传给调⽤者。

)创建过程create or replace procedure select_emp(num_empno in emp.empno%type,name out emp.ename%type,salary out emp.sal%type) isbeginselect ename,sal into name,salary from emp where empno = num_empno;exceptionwhen no_data_found thendbms_output.put_line('该部门不存在');end select_emp;/调⽤declarevar_name emp.ename%type,var_salary emp.sal%type) isbeginselect_emp(&员⼯编号,var_ename,var_salary);if var_ename is not null thendbms_output.put_line(var_ename||' '||var_salary);end if;end;/3.创建⼀个过程,在执⾏调⽤过程时,可随机输⼊emp表中某个雇员的姓名,根据雇员的姓名,返回该雇员的薪⽔值,并输出。

存储过程语法练习题

存储过程语法练习题

存储过程语法练习题存储过程语法练习题存储过程是数据库中一种非常重要的对象,它可以用来封装一系列的SQL语句,实现特定的功能。

通过存储过程,我们可以提高数据库的性能,简化复杂的业务逻辑,并且可以实现一些数据库本身不支持的功能。

本文将通过一些练习题来帮助读者加深对存储过程语法的理解和应用。

练习一:创建一个简单的存储过程假设有一个学生表student,包含字段id、name和age。

请编写一个存储过程,用于查询年龄大于等于18岁的学生信息,并按照年龄降序排序。

解答:```sqlCREATE PROCEDURE GetAdultStudentsASBEGINSELECT id, name, ageFROM studentWHERE age >= 18ORDER BY age DESCEND```练习二:带参数的存储过程在练习一的基础上,假设需要根据学生的姓名查询学生信息。

请修改存储过程,使其可以接受一个姓名参数,并根据姓名查询学生信息。

解答:```sqlCREATE PROCEDURE GetStudentByName@name NVARCHAR(50)ASBEGINSELECT id, name, ageFROM studentWHERE name = @nameEND```练习三:带输出参数的存储过程假设有一个学生表student,包含字段id、name和age。

请编写一个存储过程,用于查询年龄大于等于18岁的学生数量,并将结果输出。

解答:```sqlCREATE PROCEDURE GetAdultStudentCount@count INT OUTPUTASBEGINSELECT @count = COUNT(*)FROM studentWHERE age >= 18END```练习四:带返回值的存储过程在练习三的基础上,假设需要查询年龄大于等于18岁的学生数量,并返回结果。

请修改存储过程,使其可以返回学生数量。

Oracle基础(习题卷19)

Oracle基础(习题卷19)

Oracle基础(习题卷19)第1部分:单项选择题,共63题,每题只有一个正确答案,多选或少选均不得分。

1.[单选题]执行带参数的存储过程,正确的方法为A)过程名 参数B)过程名(参数)C)过程名=参数D)A,B,C三种都可以答案:B解析:2.[单选题]在下列各项中不能正确地赋列别名的是A)SELECT 学号 '学生号码’B)SELECT学号 学生号码C)SELECT学号 AS 学生号码D)SELECT @学生号码=学号答案:D解析:3.[单选题]下列关于索引的说法中,错误的是()A)引入索引的目的是为了加快查询的速度。

B)当一个表删除时所有基于该标的索引都被自动的删除掉。

C)索引可按物理分类如下:分区或非分区索引、B-树、位图索引、位图索引D)索引不需要重建和维护。

答案:D解析:4.[单选题]带有( )字句的SELECT语句可以在表的一行或多行放置排他锁。

A)FOR INSERTB)FOR UPDATEC)FOR DELETED)FOR REFRESH答案:B解析:5.[单选题]()是一个单元操作,要么全部执行成功,要么全部执行失败。

A)事务。

B)插入操作。

C)更新操作。

D)删除操作。

答案:A解析:6.[单选题]下列不建议使用的常用标量数据类型是。

( )D)Blob答案:D解析:7.[单选题]下面不属于Oracle数据库状态的是( )。

A)OpenB)MountC)CloseD)Ready答案:D解析:8.[单选题]利用游标来修改数据时,所用的FOR UPDATE充分利用了事务的哪个特性?A)原子性B)一致性C)永久性D)隔离性答案:D解析:9.[单选题]有一产品表(编号,名称,价格,数量,所属分类),下列语法不正确的是( )A)select * from 产品表where 价格>1000B)select sum(价格) from 产品表group by 所属分类having max(价格)>1000C)select所属分类,sum(价格) from 产品表where 价格>1000 group by 所属分类D)select所属分类,sum(价格) from 产品表where max(价格)>1000 group by 所属分类答案:D解析:10.[单选题]当误删除某数据,可以执行()操作,恢复被删除的数据。

存储过程练习题

存储过程练习题

存储过程练习题存储过程练习题存储过程是数据库中一种重要的对象,它可以将一系列的SQL语句封装起来,形成一个可重复使用的代码块。

通过使用存储过程,我们可以提高数据库的性能和安全性,同时也能减少代码的冗余。

为了更好地理解和运用存储过程,下面将给出一些练习题,帮助读者加深对存储过程的理解和应用。

1. 创建一个名为"GetEmployeeName"的存储过程,输入参数为员工的ID,输出参数为员工的姓名。

请写出相应的存储过程代码。

2. 创建一个名为"UpdateEmployeeSalary"的存储过程,输入参数为员工的ID和新的薪水,将指定员工的薪水更新为新的薪水。

请写出相应的存储过程代码。

3. 创建一个名为"GetDepartmentEmployees"的存储过程,输入参数为部门的ID,返回该部门中所有员工的信息。

请写出相应的存储过程代码。

4. 创建一个名为"DeleteInactiveEmployees"的存储过程,删除所有未激活的员工(即状态为"Inactive"的员工)。

请写出相应的存储过程代码。

5. 创建一个名为"GetEmployeeCountByDepartment"的存储过程,输入参数为部门的ID,返回该部门中员工的数量。

请写出相应的存储过程代码。

6. 创建一个名为"GetEmployeeBonus"的存储过程,输入参数为员工的ID,输出参数为员工的奖金。

奖金的计算规则为:如果员工的薪水大于5000,则奖金为薪水的10%;否则奖金为薪水的5%。

请写出相应的存储过程代码。

7. 创建一个名为"GetTopPaidEmployees"的存储过程,输入参数为返回的员工数量N,返回薪水排名前N的员工信息。

请写出相应的存储过程代码。

8. 创建一个名为"GetEmployeeAverageSalary"的存储过程,返回所有员工的平均薪水。

oracle练习题及答案

oracle练习题及答案

o r a c l e练习题及答案(总7页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--试题一一、填空题(每小题4分,共20分)1、数据库管理技术经历了___人工管理、文件系统、数据库系统__三个阶段2、数据库三级数据结构是:外模式、模式、内模式3、Oracle数据库中,SGA由_数据库缓冲区,重做日志缓冲区,共享池组成4、在Oracle数据库中,完正性约束类型有:Primay key约束。

Foreign key约束,Unique约束,check约束,not need约束5、PL/SQL中游标操作包括:声明游标,打开游标,提取游标,关闭游标二、正误判断题(每小题2分,共20分)1、数据库中存储的基本对象是数据(T)2、数据库系统的核心是DBMS(T)3、关系操作的特点是集合操作(T)4、关系代数中五种基本运算是并、差、选择、投影、连接(F)5、Oracle进程就是服务器进程(F)6、oraclet系统中SGA所有用户进程和服务器进程所共享(T)7、oracle数据库系统中数据块的大小与操作系统有关(T)8、oracle数据库系统中,启动数据库和第一步是启动一个数据库实例(T)9、PL/SQL中游标的数据是可以改变的(F)10、数据库概念模型主要用于数据库概念结构设计(T)三、简答题(每小题7分,共35分)1、何谓数据与程序的逻辑独立性和物理独立性2、试述关系代数中等值连接与自然连接的区别与联系3、何谓数据库,数据库设计一般分为哪些阶段4、简述Oracle逻辑数据库的组成5、试任举一例说明游标的使用方法五、设有雇员表emp(empno,ename,age,sal,tel,deptno),其中:empno-----编号,name------姓名,age -------年齡,sal-----工资,tel-----电话deptno-----部门号。

请按下列要求分别晨SQL*PLUS下编程。

oracle练习题及答案

oracle练习题及答案

oracle练习题及答案Oracle练习题及答案Oracle数据库是全球最受欢迎的关系型数据库管理系统之一,广泛应用于企业级应用程序开发和数据管理。

为了提高对Oracle数据库的理解和应用能力,下面将提供一些常见的Oracle练习题及其答案。

1. 查询表中的所有数据答案:使用SELECT语句可以查询表中的所有数据,例如:SELECT * FROM 表名;2. 查询表中的特定列数据答案:使用SELECT语句并指定需要查询的列名,例如:SELECT 列名1, 列名2 FROM 表名;3. 查询表中满足特定条件的数据答案:使用SELECT语句并使用WHERE子句来指定条件,例如:SELECT * FROM 表名 WHERE 列名 = 值;4. 对查询结果进行排序答案:使用SELECT语句并使用ORDER BY子句来指定排序的列和排序方式,例如:SELECT * FROM 表名 ORDER BY 列名 ASC/DESC;5. 对查询结果进行分组答案:使用SELECT语句并使用GROUP BY子句来指定分组的列,例如:SELECT 列名1, 列名2 FROM 表名 GROUP BY 列名1;6. 查询表中的唯一数据答案:使用SELECT DISTINCT语句可以查询表中的唯一数据,例如:SELECT DISTINCT 列名 FROM 表名;7. 查询表中的前N条数据答案:使用SELECT语句并使用ROWNUM关键字来限制查询结果的行数,例如:SELECT * FROM 表名 WHERE ROWNUM <= N;8. 使用聚合函数进行数据统计答案:使用聚合函数如SUM、AVG、COUNT等可以对数据进行统计,例如:SELECT COUNT(*) FROM 表名;9. 进行多表查询答案:使用SELECT语句并使用JOIN关键字来连接多个表,例如:SELECT * FROM 表名1 JOIN 表名2 ON 表名1.列名 = 表名2.列名;10. 更新表中的数据答案:使用UPDATE语句可以更新表中的数据,例如:UPDATE 表名 SET 列名 = 值 WHERE 条件;11. 删除表中的数据答案:使用DELETE语句可以删除表中的数据,例如:DELETE FROM 表名 WHERE 条件;12. 创建新表答案:使用CREATE TABLE语句可以创建新表,例如:CREATE TABLE 表名 (列名1 数据类型, 列名2 数据类型, ...);13. 修改表结构答案:使用ALTER TABLE语句可以修改表的结构,例如:ALTER TABLE 表名 ADD 列名数据类型;14. 删除表答案:使用DROP TABLE语句可以删除表,例如:DROP TABLE 表名;以上是一些常见的Oracle练习题及其答案,希望能够帮助读者更好地理解和应用Oracle数据库。

oracle练习题及答案

oracle练习题及答案

oracle练习题及答案Oracle练习题及答案Oracle是一种广泛使用的关系型数据库管理系统,它具有强大的数据处理和管理能力。

对于想要提升自己的数据库技能的人来说,练习题是一个非常有效的学习方法。

通过解答一系列的练习题,可以帮助我们更好地理解Oracle的使用和原理。

下面是一些常见的Oracle练习题及其答案,供大家参考。

1. 查询一个表中所有的数据答案:可以使用SELECT语句来查询一个表中的所有数据。

例如,假设我们有一个名为"employees"的表,可以使用以下语句来查询所有的数据:SELECT * FROM employees;2. 查询一个表中特定列的数据答案:如果我们只想查询一个表中特定列的数据,可以使用SELECT语句,并在其中指定要查询的列名。

例如,如果我们只想查询"employees"表中的"first_name"和"last_name"列,可以使用以下语句:SELECT first_name, last_name FROM employees;3. 查询满足特定条件的数据答案:如果我们只想查询满足特定条件的数据,可以在SELECT语句中使用WHERE子句来指定条件。

例如,如果我们只想查询"employees"表中工资大于5000的员工,可以使用以下语句:SELECT * FROM employees WHERE salary > 5000;4. 对查询结果进行排序答案:如果我们想对查询结果进行排序,可以在SELECT语句中使用ORDER BY子句,并指定要排序的列名。

例如,如果我们想按照"employees"表中的"last_name"列进行升序排序,可以使用以下语句:SELECT * FROM employees ORDER BY last_name ASC;5. 对查询结果进行分组答案:如果我们想对查询结果进行分组,可以在SELECT语句中使用GROUP BY 子句,并指定要分组的列名。

oracle存储过程的面试题

oracle存储过程的面试题

oracle存储过程的面试题Oracle存储过程是数据库中的一种重要对象,它是一段预定义的可重复使用的代码块,用于实现特定功能。

在面试中,经常会涉及到关于Oracle存储过程的问题,考察面试者的数据库编程和性能优化能力。

本文将为大家分享一些常见的Oracle存储过程面试题及其解答,希望能够帮助读者顺利通过面试。

1. 什么是Oracle存储过程?Oracle存储过程是一段预定义的可重复使用的代码块,由PL/SQL语言编写,用于实现特定功能。

存储过程可以接收参数,执行一系列的SQL语句或者其他PL/SQL代码,并返回结果。

2. 存储过程与函数有何区别?存储过程和函数的最大区别在于返回值。

存储过程可以不返回值,而函数必须返回一个值。

此外,存储过程通常用于执行一系列的操作,而函数主要用于计算和返回一个值。

3. 存储过程有哪些优点?存储过程具有以下优点:- 提高性能:存储过程在数据库中预编译,可以减少数据传输和减轻网络负担,提高数据库的执行效率。

- 提高安全性:存储过程可以通过授权来控制访问权限,保护敏感数据。

- 提高代码可重用性:存储过程可以被多次调用,实现代码的重用,减少开发工作量。

- 支持事务处理:存储过程可以在一个事务中执行多个SQL语句,保证数据库的一致性。

4. 如何创建存储过程?创建存储过程的语法如下所示:```CREATE [OR REPLACE] PROCEDURE procedure_name[(parameter_name [IN | OUT | IN OUT] data_type [, ...])]IS-- 声明变量和常量BEGIN-- 执行语句和PL/SQL代码END;```其中,`procedure_name`是存储过程的名称,`parameter_name`是参数的名称,`data_type`是参数的数据类型。

`IN`表示输入参数,`OUT`表示输出参数,`IN OUT`表示既可以输入也可以输出。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.创建用户kaifa(密码亦为kaifa),并分配connect,create table,resource权限。

CREATE user KAIFA IDENTIFIED BY KAIFA DEFAULT TABLESPACE HOSDATA TEMPOARY TABLESPACE TEMPDATA;GRANT CONNECT , CREATE TABLE , RESOURCE TO KAIFA2.在做报表统计时,需要根据报表日期和币种从概要表中查询本期余额。

概要表(CCB_GYB)信息如下:--RMB 人民币--CNY 本位币--USD 外币折美元如果币种为RMB,则取出人民币余额作为本期余额;为CNY,则取本位币余额;为USD 则取外币折美元余额。

请编写一个函数GetCurrBal(qrp_rq IN VARCHAR2, --报表日期qrp_code IN VARCHAR2--币种)CREATE OR REPLACE FUNCTION GetCurrBal(Vqrp_rq Date , --报表日期Vqrp_code VARCHAR2--币种)RETURN NUMBERISVAMOUNT NUMBER ;VDATE Date;BEGINSELECT ACCOUNTING_DATE INTO VDATE FROM CCB_GYBWhere ACCOUNTING_DATE = Vqrp_rq;IF Vqrp_code = 'RMB'THENSELECT RMB_YTD_BALANCE INTO VAMOUNT FROM CCB_GYB WHERE Vqrp_code= 'RMB'AND ACCOUNTING_DATE= VDATE;ELSEIF Vqrp_code = 'CNY'THENSELECT CNY_YTD_BALANCE INTO VAMOUNT FROM CCB_GYB WHERE Vqrp_code= 'CNY';ELSESELECT USD_YTD_BALANCE INTO VAMOUNT FROM CCB_GYB WHERE Vqrp_code= 'USD';END IF ;END IF ;COMMIT;RETURN VAMOUNT;END;---对多行处理,用游标---多单行处理,用SELECT实现此功能,并能在sqlplus里调用。

其中建表语句如下:create table CCB_GYB(ACCOUNTING_DATE DATE,RMB_YTD_BALANCE NUMBER,CNY_YTD_BALANCE NUMBER,USD_YTD_BALANCE NUMBER);创建索引:create unique index CCB_GYB_IDX on CCB_GYB (ACCOUNTING_DATE);3.假设有学生成绩表(CJ)如下[] [学科] [成绩]三语文 80三数学 86三英语 75四语文 78四数学 85四英语 78现有需求如下:(1)要求统计分数段的人数。

显示结果为:[成绩] [人数]0<成绩<60 060<成绩<80 080<成绩<100 5CREATE OR REPLACE Procedure SCOUNTIsVCOUNT1 Varchar2(10);VCOUNT2 Varchar2(10);VCOUNT3 Varchar2(10);BeginSelect Count(*) Into VCOUNT1 From CJ Where SCORE Between0And60;Select Count(*) Into VCOUNT2 From CJ Where SCORE Between61And80;Select Count(*) Into VCOUNT3 From CJ Where SCORE Between81And100;dbms_output.put_line ('分数'|| ‘‘|| ‘人数’);dbms_output.put_line ('0<成绩<60'|| ‘‘||VCOUNT1);dbms_output.put_line ('60<成绩<80'|| ‘‘|| VCOUNT2);dbms_output.put_line ('81<成绩<100'|| ‘‘|| VCOUNT3);End;(2)要求根据,把各科成绩显示在一条记录里。

显示结果如下:语文数学英语总成绩---------- ---------- ---------- ---------- ----------四 78 85 78241三 80 86 75241总分 158 171 153482(Select D.SSNAME,D.SSOCRE 数学,D.YSCORE 语文,D.ESCORE 英语 ,Sum(D.SSOCRE+D.YSCORE+D.ESCORE) 总成绩From(Select A.SNAME SSNAME ,A.SCORE SSOCRE,B.SCORE YSCORE,C.SCORE ESCORE From CJ A ,CJ B ,CJC Where A.SNAME=B.SNAMEAnd C.SNAME=A.SNAME And A.XK='语文'And B.XK='数学'And C.XK='英语')DGroup By D.SSNAME,D.SSOCRE,D.YSCORE,D.ESCORE)Union All(Select'总分' ,Sum(FF.BB) 数学 ,Sum() 语文,Sum(FF.DD) 英语,Sum(FF.EE) 总成绩From (Select D.SSNAME AA,D.SSOCRE BB,D.YSCORE CC,D.ESCORE DD,Sum(D.SSOCRE+D.YSCORE+D.ESCORE) EE From(Select A.SNAME SSNAME ,A.SCORE SSOCRE,B.SCORE YSCORE,C.SCORE ESCORE From CJ A ,CJ B ,CJC Where A.SNAME=B.SNAMEAnd C.SNAME=A.SNAME And A.XK='语文'And B.XK='数学'And C.XK='英语') DGroup By D.SSNAME,D.SSOCRE,D.YSCORE,D.ESCORE) FF)行转列Select SNAME ,SUM(DECODE(XK,'语文',SCORE,0)) 语文,Sum(DECODE(XK,'数学',SCORE,0)) 数学 ,Sum(DECODE(XK,'英语',SCORE,0)) 英语 , SUM(SCORE) AA From CJGroup By SNAMEUnion AllSelect'总分' ,Sum(DECODE(XK,'语文',SCORE,0)) 语文,Sum(DECODE(XK,'数学',SCORE,0)) 数学 ,Sum(DECODE(XK,'英语',SCORE,0)) 英语 , SUM(SCORE) From CJ使用SQL语句或存储过程(显示结果时可用dbms_output打印出来)实现这两个功能。

DBMS_OUTPUT.PUT_LINE(‘’‘语文’‘数学’‘英语’‘总成绩’)4.某一客户表包含如下信息:INDIVIDUALID 客户ID VARCHAR2(20)(唯一键)BIRTHDATE 出生日期DateGENDER 性别VARCHAR2(10)SALARY 月收入NUMBER(10,2)CERT-TYPE 证件类型VARCHAR2(10)CERT-NO 证件VARCHAR2(20)CREATED-TS 进入系统的时间TIMESTAMP现要把该表数据导出成文件,导出的容格式如下:属性列列长度备注INDIVIDUALID 20BIRTHDATE 8 格式为:yyyymmddGENDER 10SALARY 13CERT-TYPE 10CERT-NO 20CREATED-TS 17 格式为:yyyymmddhh24missff3 要求每个字段列的容长度是固定的,不足部分由空格补齐,字符串左对齐(右补空格),数字右对齐。

如果列的容为null,需先进行处理,字符串默认为空格,数字默认为0,日期默认为99991231,时间戳默认为99991231000000000。

请编写程序实现该导出功能。

创建表脚本:create table tb1010(INDIVIDUALID VARCHAR2(20),BIRTHDATE date,GENDER VARCHAR2(10),SALARY NUMBER(10,2),CERT_TYPE VARCHAR2(10),CERT_NO VARCHAR2(20),CREATED_TS TIMESTAMP);5.某语音本表信息如下:Call_book_infoMOBILE_ID 移动VARCHAR2(12)CALLIN_TIME 呼入时间DateCALLOUT_TIME 呼出时间DateSTATUS 状态CHAR(1)在某次大批量操作后,数据记录达到100万,MOBILE_ID估计有2万个重复,现要求删除重复的(只保留一条),因为该表是业务表,删除时不能影响业务的正常使用。

编写存储过程实现删除重复的功能。

要求如下:(1)为保证删除的数据以后可查,在删除时要先做备份,备份不成功则不能进行删除。

(2)要有日志记录,比如删除所花时间,删除成功了多少条,失败多少条等操作信息。

(3)如果出现性能问题,要跟踪原因。

生成trace文件进行分析,改进程序。

6.阅读下列说明,回答问题1至问题5。

【说明】某工厂的信息管理数据库的部分关系模式如下所示:职工(职工号,,年龄,月工资,部门号,,办公室)部门(部门号,部门名,负责人代码,任职时间)关系模式的主要属性、含义及约束如表2-1所示,“职工”和“部门”的关系示例分别如表2-2和表2-3所示。

表2-1主要属性、含义及约束表2-2 “职工”关系表2-3“部门”关系【问题1】根据上述说明,由SQL定义的“职工”和“部门”的关系模式,以及统计各部门的人数C、工资总数Totals、平均工资Averages的D_S视图如下所示,请在空缺处填入正确的容。

相关文档
最新文档