oracle_存储过程练习题

合集下载

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子句()。

存储过程题目

存储过程题目

题目一、每个部门的前三个工资最高的员工每个部门的前三档工资的所有员工题目二、users1name company company_address url1Joe ABC Work Lane ;Jill XYZ Job Street ;写PL/SQL来创建新表users2name company company_address url1Joe ABC Work Lane Joe ABC Work Lane Jill XYZ Job Street Jill XYZ Job Street 综合题目三、create table C USTOMERS --客户表(id number(8) primary key,taaccoid char(12),name varchar2(100),birthdate nu mber(8),certno varchar2(20),province number(8),age nu mber(4));1 111000051346 李惠萍19780304 430111************2 32...create table PR OVINCE --省份表(id nu mber(8) primary key,name varchar2(100));1 北京市...create table TA_SHARE --基金份额表(taaccoid char(12),fundcode char(6),curshare nu mber(16,2));111000051346 110002 5228.48create table PR ODUC TS --基金产品表(fundcode char(6),fund name varchar2(100));110001 产品1...建立存储过程,输入参数:I_FUNDCODE --基金产品,I_PROVINC E --省份输出参数:O_STA TUS --态值,R T_CURSOR --返回游标返回如下表格的数据:省份基金产品1~20岁(个)21~40岁(个)41岁以上(个)份额分别在以上表上建立合理的索引,要求存储过程中写出的SQL必须不能对CR M_CUS TOMERS和CRM_TA_SHAR E进行全表扫描。

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_PLSQL测试题与答案(绝对经典)

Oracle_PLSQL测试题与答案(绝对经典)

Oracle PL/SQL测试题姓名:___ _________一、选择题1、Oracle数据库中为新创建的表分配的初始空间通常为多大(B)A、一个块B、一个区C、一个段D、c一个表空间2、关于存储过程参数,正确的说法是(B)A、存储过程的输出参数可以是标量类型,也可以是表类型B、存储过程输入参数可以不输入信息而调用过程C、可以指定字符参数的字符长度(函数的()或者过程的(number/varchar2))D、以上说法都不对3、下列说法,正确的说法是(B)A、只要在存储过程中有增删改语句,一定加自治事务B、在函数内可以修改表数据C、函数不能递归调用D、以上说法都不对4、有一产品表(编号,名称,价格,数量,所属分类),下列语法不正确的是(D)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 所属分类5、关于触发器,下列说法正确的是(B)A、可以在表上创建INSTEAD OF 触发器B、语句级触发器不能使用“:old”和“:new”C、行级触发器不能用于审计功能D、触发器可以显式调用6、下列那些是Oracle的伪列(ACD)A、ROWIDB、ROW_NUMBER()C、LEVELD、ROWNUME、COLUMN7、当表的重复行数据很多时,应该创建的索引类型应该是(C )A、B树B、reverseC、bitmapD、函数索引8、在建表时如果希望某列的值,在一定的范围内,应建什么样的约束?(C )A、primary keyB、uniqueC、checkD、not null9、利用游标来修改数据时,所用的。

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下编程。

存储过程语法练习题推荐

存储过程语法练习题推荐

存储过程语法练习题推荐随着数据库技术的不断发展,存储过程作为一种常见的数据库编程技术,被广泛应用于各种项目中。

掌握存储过程的语法和使用技巧,对于数据库开发人员来说是非常重要的。

在本文中,将会推荐一些存储过程语法练习题,帮助读者巩固和提升其存储过程的技能。

1. 基础入门题:编写一个简单的存储过程,实现对一个指定表中的数据进行插入操作。

要求在存储过程中使用变量来指定插入的数据,并且插入的数据需要满足一定的约束条件。

这个题目可以帮助读者熟悉存储过程的基本语法,了解如何在存储过程中使用变量和控制结构。

同时,通过约束条件的设置,读者可以巩固对数据库数据一致性的控制。

2. 复杂查询题:编写一个存储过程,根据给定的条件,在指定的表中进行数据查询,并返回满足条件的结果。

要求在存储过程中使用游标来处理查询结果集,并且能够处理查询结果为空的情况。

这个题目可以帮助读者提升对存储过程中游标的使用技巧,了解如何处理查询结果为空的情况。

通过编写这样的存储过程,读者可以更好地掌握查询语句的编写和结果集的处理。

3. 复杂业务逻辑题:编写一个存储过程,实现一个复杂的业务逻辑。

比如,根据一系列指定条件,查询数据库中的数据并进行计算,最后返回计算结果。

这个题目可以帮助读者掌握存储过程中复杂业务逻辑的实现方法,了解如何结合查询、计算和控制结构来实现复杂的业务需求。

通过解决这样的问题,读者可以提升自己的数据库设计和编程能力。

4. 性能优化题:给定一个存在性能问题的存储过程,通过优化存储过程的代码,提升其执行效率。

要求在优化过程中使用合适的索引和优化技巧。

这个题目可以帮助读者理解存储过程的性能优化方法,了解如何通过调整代码和使用合适的索引来提升存储过程的执行效率。

通过解决这样的问题,读者可以提高自己的数据库性能优化水平。

通过上述的存储过程语法练习题,读者可以逐步提升自己在存储过程编写和优化方面的技能。

在实际的项目中,存储过程的使用是非常常见的,因此掌握存储过程的基本技巧和高级应用对于数据库开发人员来说是非常重要的。

Oracle相关练习题(doc 7页)

Oracle相关练习题(doc 7页)

Oracle相关练习题(doc 7页)一、填空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命令统将使用下列哪一个进程来释放它所占用的资源?( D )A.DBWR B.LGWR C.SMON D.PMON3. 如果要查询数据库中所有表的信息,应当使用下列哪种数据字典视图?( A )A. DBA视图B. ALL视图C. USER视图D. 动态性能视图4. 下列哪一项是Oracle数据库中最小的存储分配单元? ( C )A. 表空间B. 段C. 盘区D. 数据块5. 下面的各选项中哪一个正确描述了Oracle数据库的逻辑存储结构? ( A )A. 表空间由段组成,段由盘区组成,盘区由数据块组成B. 段由表空间组成,表空间由盘区组成,盘区由数据块组成C. 盘区由数据块组成,数据块由段组成,段由表空间组成D. 数据块由段组成,段由盘区组成,盘区由表空间组成6. 下列的哪个子句在SELECT语句中用于排序结果集?( D )A. Having子句B. Where子句C. From子句D. Order by子句7. Having子句的作用是( B )。

数据库入门PLSQL存储过程等题库

数据库入门PLSQL存储过程等题库

第一阶段Q.编写一个PL/SQL程序块以显示所给出雇员编号的雇员的详细信息。

A.DECLAREerec emp%ROWTYPE;BEGINSELECT * INTO erec FROM emp WHERE empno=&雇员编号;DBMS_OUTPUT.PUT_LINE('EmpNo' || ' ' || 'Ename' || ' '|| 'Job' || ' ' || 'Manager' || ' ' || 'HireDate' || ' ' || 'Salary' || ' ' || 'Commision' || ' ' || 'DeptNo');DBMS_OUTPUT.PUT_LINE(erec.ename || ' ' || erec.job || ' ' || erec.mgr || ' ' ||erec.hiredate || ' ' || erec.sal || ' ' || m || ' ' || erec.deptno);END;/Q.编写一个PL/SQL程序块以计算某个雇员的年度薪水总额。

A.DECLAREesal NUMBER;eename emp.ename%TYPE;BEGINSELECT (NVL(sal,0)+NVL(comm,0))*12,ename INTO esal,eename FROM emp WHERE empno=&雇员编号;DBMS_OUTPUT.PUT_LINE(eename || '''s Years Salary is ' || esal);END;/Q.按下列加薪比执行:Deptno Raise(%age)10 5%20 10%30 15%40 20%加薪的百分比是以他们现有的薪水为根据的。

  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 KAIFA

2. 在做报表统计时,需要根据报表日期和币种从概要表中查询本期余额。 概要表(CCB_GYB)信息如下: ACCOUNTING_DATE DATE 报表日期(唯一索引) RMB_YTD_BALANCE NUMBER 人民币余额 CNY_YTD_BALANCE NUMBER 本位币余额 USD_YTD_BALANCE NUMBER 外币折美元余额 其中币种代码如下: --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 NUMBER IS VAMOUNT NUMBER ; VDATE Date; BEGIN

SELECT ACCOUNTING_DATE INTO VDATE FROM CCB_GYB Where ACCOUNTING_DATE = Vqrp_rq; IF Vqrp_code = 'RMB' THEN

SELECT RMB_YTD_BALANCE INTO VAMOUNT FROM CCB_GYB WHERE Vqrp_code= 'RMB' AND ACCOUNTING_DATE= VDATE; ELSE IF Vqrp_code = 'CNY' THEN SELECT CNY_YTD_BALANCE INTO VAMOUNT FROM CCB_GYB WHERE Vqrp_code= 'CNY'; ELSE SELECT 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)要求统计分数段的人数。显示结果为: [成绩] [人数] 06080CREATE OR REPLACE Procedure SCOUNT Is VCOUNT1 Varchar2(10); VCOUNT2 Varchar2(10); VCOUNT3 Varchar2(10); Begin

Select Count(*) Into VCOUNT1 From CJ Where SCORE Between 0 And 60; Select Count(*) Into VCOUNT2 From CJ Where SCORE Between 61 And 80; Select Count(*) Into VCOUNT3 From CJ Where SCORE Between 81 And 100; dbms_output.put_line ('分数'|| ‘ ‘|| ‘人数’); dbms_output.put_line ('0 dbms_output.put_line ('60 dbms_output.put_line ('81

End;

(2)要求根据姓名,把各科成绩显示在一条记录里。显示结果如下: 姓名 语文 数学 英语 总成绩 ---------- ---------- ---------- ---------- ---------- 李四 78 85 78 241 张三 80 86 75 241 总分 158 171 153 482

(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 ,CJ C Where A.SNAME=B.SNAME And C.SNAME=A.SNAME And A.XK='语文' And B.XK='数学' And C.XK='英语')D

Group By D.SSNAME,D.SSOCRE,D.YSCORE,D.ESCORE ) Union All

(Select '总分' 姓名,Sum(FF.BB) 数学 ,Sum(FF.CC) 语文,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 ,CJ C Where A.SNAME=B.SNAME And C.SNAME=A.SNAME And A.XK='语文' And B.XK='数学' And C.XK='英语') D

Group 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 CJ Group By SNAME

Union All Select '总分' ,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 出生日期 Date GENDER 性别 VARCHAR2(10) SALARY 月收入 NUMBER(10,2) CERT-TYPE 证件类型 VARCHAR2(10) CERT-NO 证件号码 VARCHAR2(20) CREATED-TS 进入系统的时间 TIMESTAMP 现要把该表数据导出成文件,导出的内容格式如下: 属性列 列长度 备注 INDIVIDUALID 20 BIRTHDATE 8 格式为:yyyymmdd GENDER 10 SALARY 13 CERT-TYPE 10 CERT-NO 20 CREATED-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_info MOBILE_ID 移动号码 VARCHAR2(12) CALLIN_TIME 呼入时间 Date CALLOUT_TIME 呼出时间 Date STATUS 状态 CHAR(1)

在某次大批量操作后,数据记录达到100万,MOBILE_ID估计有2万个重复,现要求删除重复的号码(只保留一条),因为该表是业务表,删除时不能影响业务的正常使用。编写存储过程实现删除重复号码的功能。 要求如下: (1) 为保证删除的数据以后可查,在删除时要先做备份,备份不成功则不能进行删除。 (2) 要有日志记录,比如删除所花时间,删除成功了多少条,失败多少条等操作信息。 (3) 如果出现性能问题,要跟踪原因。生成trace文件进行分析,改进程序。

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

相关文档
最新文档