数据库程序员面试分模拟题5_第1页
数据库程序员面试分模拟题5_第2页
数据库程序员面试分模拟题5_第3页
数据库程序员面试分模拟题5_第4页
数据库程序员面试分模拟题5_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库程序员面试分模拟题5简答题1.

如何实时查看日志输出?正确答案:在Linux中,可以使用命令“tail-f”来实时查看日志的输出。在Windows下也有tail.exe工具,直接复制到目录(江南博哥)C:\Windows\System32下,然后直接输入命令“tail-f文件名”即可。

2.

Oracle中哪个包可以获取环境变量的值?正确答案:可以通过DBMS_SYSTEM.GET_ENV来获取环境变量的当前生效值。[考点]系统包

3.

控制文件包含哪些基本内容?正确答案:控制文件主要包含如下条目,可以通过dump控制文件内容看到,命令为“altersystemseteventsimmediatetracenamecontrolflevel12';”,也可以通过视图V$CONTROLFILE_RECORD_SECTION看到。

4.

什么是降序索引和升序索引?正确答案:对于升序索引(AscendingIndexes),数据库按升序排列的顺序存储数据。索引默认按照升序存储列值。默认情况下,字符数据按每个字节中包含的二进制值排序,数值数据按从小到大排序,日期数据从早到晚排序。

降序索引(DescendingIndexes)将存储在一个特定的列或多列中的数据按降序排序。创建降序索引时使用DESC关键字,如下:

CREATEINDEXIND_DESCONTESTDESC(ADESC,BASC);

需要注意的是,降序索引在DBA_INDEXES的INDEX_TYPE列表现为FUNCTION-BASED即函数索引,但是在DBA_IND_EXPRESSIONS不能体现其升序或降序,只能通过视图DBA_IND_COLUMNS的DESCEND列来查询。[考点]分类

5.

MySQL有哪几个默认数据库?正确答案:在MySQL中,数据库也可以称为Schema。在安装MySQL后,默认有informationschema、mysql、performance_schema和sys这几个数据库,如下:

1.数据库information_schema

information_schema是信息数据库,是MySQL5.0新增的一个数据库,其中保存着关于MySQL服务器所维护的所有其他数据库的信息。information_schema提供了访问数据库元数据的方式。元数据是关于数据的数据,例如,数据库名或表名、列的数据类型、访问权限等。information_schema是一个虚拟数据库,有数个只读表,它们实际上是视图,而不是基本表,因此,无法看到与之相关的任何文件。

2.数据库mysql

这个是MySQL的核心数据库,主要存储着数据库的用户、权限设置、MySQL自己需要使用的控制和管理信息。它不可以被删除,如果对MySQL不是很了解,那么也不要轻易修改这个数据库里面的表信息。

3.数据库performance_schema

这是从MySOL5.5版本开始新增的一个数据库,主要用于收集数据库服务器性能数据,需要设置参数performance_schema才可以启动该功能。这个功能从MySQL5.6.6开始,默认是开启的(在MySQL5.6.6版本以下默认是关闭的),其值为1或ON表示启用,为0或OFF表示关闭。需要注意的是,该参数是静态参数,只能写在f中,不能动态修改。

4.数据库sys

MySOL5.7提供了sys系统数据库。sys数据库结合了information_schema和performance_schema的相关数据,里面包含了一系列的存储过程、自定义函数以及视图来帮助DBA快速地了解系统的元数据信息,为DBA解决性能瓶颈提供了巨大帮助。sys数据库目前只包含一个表,表名为sys_config。

另外需要注意的一点是,在MySQL5.7以前还存在一个默认的test库,用于测试,而在MySQL5.7及其之后的版本中去掉了该库。

6.

Oracle删除数据库的方式有哪几种?正确答案:有如下几种方式可以用来删除Oracle数据库:

1)直接在OS级别调用dbca命令以静默的方式删除数据库,如下所示,其中,mydb为数据库名:

dbca-silent-deleteDatabase-sourceDBmydb

2)SQL窗口:

ALTERDATABASECLOSE;

ALTERSYSTEMENABLERESTRICTEDSESSION;

DROPDATABASE;

STARTUPFORCEMOUNTRESTRICT;

DROPDATABASE;

注意:强烈推荐第1种方式,对于第2种方式,若是在RAC环境中,数据库需要设置参数CLUSTER_DATABASE为FALSE后才可以执行DROPDATABASE,设置的命令为ALTERSYSTEMSETCLUSTER_DATABASE=FALSESID='*'SCOPE=SPFILE;。[考点]建库与删库

7.

数据的物理独立性和逻辑独立性分别指的是什么?正确答案:数据独立性表示应用程序与数据库中存储的数据不存在依赖关系,包括数据的物理独立性和数据的逻辑独立性。数据库管理系统的模式结构和二级映像功能保证了数据库中的数据具有很高的物理独立性和逻辑独立性。

物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。即:数据在磁盘上怎样存储由DBMS管理,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变了,应用程序不用改变。

逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,即:当数据的逻辑结构改变时,用户程序也可以不变。[考点]数据库系统的组成与结构

8.

使用SCOTT/TIGER用户下的EMP表和DEPT表完成下列练习,表的结构说明如下:

EMP员工表(EMPNO员工号/ENAME员工姓名/JOB工作/MGR上级编号MIREDATE受雇日期/SAL薪金/COMM佣金/DEPTNO部门编号)

DEPT部门表(DEPTNO部门编号/DNAME部门名称/LOC地点)

工资=薪金+佣金

1)列出至少有一个员工的所有部门。

2)列出薪金比“SMITH”多的所有员工。

3)列出所有员工的姓名及其直接上级的姓名。

4)列出受雇日期早于其直接上级的所有员工。

5)列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。

6)列出所有工作为“CLERK”办事员的姓名及其部门名称。

7)列出最低薪金大于1500的各种工作。

8)列出在部门“SALES”销售部工作的员工的姓名,假定不知道销售部的部门编号。

9)列出薪金高于公司平均薪金的所有员工。

10)列出与员工“SCOTT”从事相同工作的所有员工。

11)列出薪金等于部门编号为30的员工的薪金的所有员工的姓名和薪金。

12)列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。

13)列出在每个部门工作的员工数量、平均工资和平均服务期限。

14)列出所有员工的姓名、部门名称和工资。

15)列出所有部门的详细信息和部门人数。

16)列出各种工作的最低工资。

17)列出工作为“MANAGER”的员工的最低薪金。

18)列出所有员工的年工资,按年薪从低到高排序。正确答案:本题考查编写SQL语句的能力,答案如下:

1)考查两个表联合查询,及GROUPBY...HAVING的用法,最终的SQL如下:

SELECTDNAMEFROMSCOTT.DEPTTWHERET.DEPTNOIN(SELECTT.DEPTNOFROMSCOTT.EMPGROUPBYT.DEPTNOHAVINGCOUNT(*)>1)

2)经典的自连接查询,最终的SQL如下:

SELECTENAMEFROMSCOTT.EMPTWHERESAL>(SELECTSALFROMSCOTT.EMPWHEREENAMELIKE='SMITH);

3)多次对自己查询,为表取个别名,内部查询可以像对象一样引用外部的对象的字段,这里引用与编程中的作用域相似,即与{}类比,最终的SQL如下:

SELECTENANE,(SELECTENAMEFROMSCOTT.EMPWHERESCOTT.EMPNOIN(A.MGR))FROMSCOTT.EMPA;

4)日期可直接用来比较,最终的SQL如下:

SELECTENAMEFROMSCOTT.EMPAWHEREHIREDATE<(SELECTHIREDATEFROMSCOTT.EMPWHERESCOTT.EMPNOIN(A.MGR));

5)以SCOTT.DEPT表为主,左连接查询,最终的SQL如下:

SELECTDNAME,B.*FROMSCOTT.DEPTALEFTJOINSCOTT.EMPBONA.DEPTNO=B.DEPTNO;

6)最终的SQL如下:

SELECTENAME,(SELECTDNAMEFROMSCOTT.DEPTWHERET.DEPTNOIN(A.DEPTNO))ASDNAMEFROMSCOTT.EMPAWHEREJOB='CLERK';

7)找出哪些工作的所有员工的薪金都大于1500,最终的SQL如下:

SELECTT.JOBFROMSCOTT.SCOTT.EMPTGROUPBYT.JOBHAVINGMIN(SAL)>1500;

8)经典的两个表连接,最终的SQL如下:

SELECTENAMEFROMSCOTT.EMPWHERET.DEPTNO=(SELECTT.DEPTNOFROMSCOTT.DEPTWHEREDNAME='SALES');

9)反复查自己,最终的SQL如下:

SELECTENAMEFROMSCOTT.EMPWHERESAL>(SELECTAVG(SAL)FROMSCOTT.EMP);

10)排除自己,最终的SQL如下:

SELECTENAMEFROMSCOTT.EMP

WHEREJOBIN(SELECTJOBFROMSCOTT.EMPWHEREENAME='SCOTT)ANDENAME!='SCOTT;

11)考查ANY的用法,且排除自己,最终的SQL如下:

SELECTENAME,SALFROMSCOTT.EMPWHERESAL=ANY(SELECTSALFROMSCOTT.EMPWHERET.DEPTNO=30)ANDT.DEPTNO!=30;

12)MAX的用法,最终的SQL如下:

SELECTSAL,ENAME

FROMSCOTT.EMPWHERESAL>(SELECTMAX(SAL)FROMSCOTT.EMPWHERET.DEPTNO=30);

13)经典的GROUPBY用法,最终的SQL如下:

SELECTT.DEPTNO,COUNT(*),AVG(A.SAL+COMM),AVG(SYSDATE-HIREDATE)FROMSCOIT.EMPAGROUPBYT.DEPTNO;

14)经典的两个表的连接查询,用具体的名称替换一个表中的主键的ID(解决很多人在实际运用中会遇到的不能绑定多列的问题),也可用WHERE来查询,与题5)比较,最终的SQL如下:

SELECTENAME,SAL+COMM,(SELECTDNAMEFROMSCOTT.DEPTAWHEREA.DEPTNO=B.DEPTNO)ASDNAMEFROMSCOTT.EMPB;

15)因为使用了SELECT*,将显示SCOTT.DEPT和后面临时表B的全部字段(注意:不只是SCOTT.DEPT的字段,注意*号),最终的SQL如下:

SELECT*FROMSCOTT.DEPTALEFTJOIN(SELECTDEPTNO,COUNT(*)FROMSCOTT.EMPGROUPBYDEPTNO)B

ONA.DEPTNO=B.DEPTNO;

16)考查MIN的用法,最终的SQL如下:

SELECTJOB,MIN(SAL)FROMSCOTT.EMPGROUPBYJOB;

17)因为MANAGER是值而不是字段,所以不能用小写,最终的SQL如下:

SELECTMIN(SAL+COMM)FROMSCOTT.EMPWHEREJOB='MANAGER';

18)NVL:空转化函数。最终的SQL如下:

SELECTENAME,(SAL+NVL(COMM,0))*12ASSALFROMSCOTT.EMPORDERBYSAL;[考点]SQL编写

9.

创建GBK字符集的数据库NEWLHR,并查看已建库的完整语句。正确答案:[考点]创建数据库

10.

什么是ASSM和MSSM?PCTFREE和PCTUSED的作用是什么?正确答案:段空间有两种管理方式,分别是手动段空间管理(ManualSegmentSpaceManagement,MSSM)和自动段空间管理(AutoSegmentSpaceManagement,ASSM)。

自动段空间管理(ASSM),它首次出现在Oracle9.2中。自由列表FREELIST被位图所取代,它是一个二进制的数组,能够迅速有效地管理存储扩展和剩余区块(FreeBlock),因此能够改善分段存储本质。ASSM会忽略PCTUSED参数而只使用PCTFREE参数。对于MSSM而言,可以设置FREELIST、PCTUSED和PCTFREE等参数来控制如何分配和使用段中的空间。

1.FREELIST(自由列表)

Oracle通过维护FREELIST列表来记录或更新所有可用的数据块。当执行INSERT语句时,Oracle首先在FREELIST列表上搜索可用的空闲数据块,搜索成功之后将数据插入那个空闲块。块在。FREELIST列表中的可用性由PCTFREE参数值来决定。起初一个空块在FREELIST列表上列出,并且会一直保留,直到空闲空间达到PCTFREE设定的值。当一个块被使用且达到PCTFREE设定的值之后,该块将从FREELIST列表移除,而当数据块的可用空间低于PCTUSED值的时候,该块又会回收,即重新回到FREELIST列表。Oracle使用FREELIST方式以提高数据库性能。因此,每一个INSERT操作,Oracle仅仅需要搜索FREELIST结构,而不是搜索所有数据块。从Oracle9i开始,引入了ASSM,它让Oracle自动管理FREELIST。在ASSM里,Oracle使用位图方式来标记数据块是否可用,这种数据块的空间管理方式比用一个列表来管理效率更高。

2.PCTFREE(空闲率)和PCTUSED(使用率)

PCTFREE和PCTUSED这两个参数是面试中常问到的概念。它们用来优化数据块空间的使用,控制数据块是否出现在FREELIST中。当创建或者更改任何表和索引的时候,Oracle在空间控制方面使用这两个存储参数。

1)PCTFREE:块中保留用于UPDATE操作的空间百分比,当数据占用的空间达到此上限时,新的数据将不能再插入此块中。当数据块中的FREE空间小于PCTFREE设置的空间时,该数据块从FREELIST中去掉,当块由于DML操作FREE空间大于PCTUSED设置的空间时,该数据库块将被添加在FREELIST链表中。对于表和索引来说,该值默认为10%,通过查询DBA_TABLES或DBA_INDEXES视图的PCT_FREE列可以获取到该属性的值。该值适用于MSSM和ASSM。

2)PCTUSED:指定块中数据使用空间的最低百分比;用于为插入一新行数据的最小空间的百分比。这个值决定了块的可用状态。可用状态的块可以执行插入操作,不可用状态的块只能执行删除和修改,可用状态的块被放在FREELIST中。该值只针对表有效,默认值为40%,通过查询DBA_TABLES视图的PCT_USED列可以获取到该属性的值。该值仅适用于MSSM。

若要修改表的PCTFREE和PCTUSED的值,可以使用ALTER语句修改。需要注意的是,修改之后只对新块起作用,若要对表中原有的块起作用,则可以使用MOVE重新组织表,SQL语句如下:

ALTERTABLET_TEST_LHRPCTFREE20;

ALTERTABLET_TEST_LHRMOVE;

若要修改索引的PCTFREE的值,可以使用如下的SQL语句:

ALTERINDEXPK_TEST_LHR

REBUILDPCTFREE20;[考点]逻辑结构

11.

分区表常用数据字典视图有哪些?正确答案:Oracle分区表相关数据字典视图如下:

1)显示数据库所有分区表的信息:DBAPARTTABLES。

2)显示表分区信息,显示数据库所有分区表的详细分区信息:DBA_TAB_PARTITIONS。

3)显示子分区信息,显示数据库所有复合分区表的子分区信息:DBA_TAB_SUBPARTITIONS。

4)显示分区列,显示数据库所有分区表的分区列信息:DBA_PART_KEY_COLUMNS。

5)显示子分区列,显示数据库所有分区表的子分区列信息:DBA_SUBPART_KEY_COLUMNS。[考点]分区表

12.

分布式数据库与并行数据库有哪些不同点?正确答案:分布式数据库与并行数据库的不同点如下:

1)应用目标不同。并行数据库系统的目标是充分发挥并行计算机的优势,利用系统中的各个处理机节点并行完成数据库任务,提高数据库系统的整体性能。分布式数据库系统的主要目的在于实现场地自治和数据的全局透明共享,而不要求利用网络中的各个节点来提高系统处理性能。

2)实现方式不同。在具体实现方法上,并行数据库系统与分布式数据库系统也有着较大的不同。在并行数据库系统中,为了充分利用各个节点的处理能力,各节点间可以采用高速网络连接。节点间的数据传输代价相对较低,当某些节点处于空闲状态时,可以将工作负载过大的节点上的部分任务通过高速网传送给空闲节点处理,从而实现系统的负载平衡。

在分布式数据库系统中,为了适应应用的需要,各节点间一般采用局域网或广域网相连,网络带宽较低,点到点的通信开销较大。因此,在查询处理时一般应尽量减少节点间的数据传输量。

3)各节点的地位不同。在并行数据库系统中,各节点是完全非独立的,不存在全局应用和局部应用的概念,在数据处理中只能发挥协同作用,而不能有局部应用。在分布式数据库系统中,各节点除了能通过网络协同完成全局事务外,各节点具有场地自治性,每个场地都是独立的数据库系统,每个场地都有自己的数据库、客户、CPU等资源,运行自己的DBMS,执行局部应用,具有高度的自治性。[考点]分布式数据库与并行数据库

13.

什么是反连接(AntiJoin)?正确答案:反连接(AntiJoin)也是一种特殊的连接类型,通常用于从一个表中返回不在另一个数据源中的数据行。当做子查询展开时,Oracle经常会把那些外部WHERE条件为NOTEXISTS、NOTIN或<>ALL的子查询转换成对应的反连接。反连接分为嵌套循环反连接(NESTEDLOOPSANTI,Hint为NL_AJ)、排序合并反连接(MERGEJOINANTI,Hint为MERGE_AJ)和哈希反连接(HASHJOINANTI,Hint为HASH_AJ)。

需要注意的是,NOTIN和<>ALL对NULL值敏感,这意味着NOTIN后面的子查询或者常量集合一旦有NULL值出现,则整个SQL的执行结果就会为NULL,即此时的执行结果将不包含任何记录。但是,NOTEXISTS对NULL值不敏感,这意味着NULL值对NOTEXISTS的执行结果不会有什么影响。正是因为NOTIN和<>ALL对NULL值敏感,所以一旦相关的连接列上出现了NULL值,此时Oracle如果还按照通常的反连接的处理逻辑来处理,得到的结果就不对了。为了解决NOTIN和<>ALL对NULL值敏感的问题,Oracle推出了改良的反连接,这种反连接能够处理NULL值,Oracle称其为Null-AwareAntiJoin,如下例:

执行步骤的列Operation的值为“HASHJOINANTINA”,关键字“NA”就是Null-Aware的缩写,表示这里采用的不是普通的哈希反连接,而是改良后的、能够处理NULL值的哈希反连接。

在Oracle11gR2中,Oracle是否启用Null-AwareAntiJoin受隐含参数“_OPTIMIZER_NULL_AWARE_ANTIJOIN”控制,其默认值为TRUE,表示启用Null-AwareAntiJoin。如果把该参数的值修改为FALSE,那么表示Oracle就不能再用Null-AwareAntiJoin了,而又因为NOTIN对NULL值敏感,所以Oracle此时也不能用普通的反连接。[考点]SQL优化

14.

数据库设计过程的输入和输出有哪些内容?正确答案:数据库设计过程的输入包括四部分内容:①总体信息需求;②处理需求;③DBMS的特征;④硬件和OS(操作系统)特征。

数据库设计过程的输出包括两部分:

1)完整的数据库结构,包括逻辑结构和物理结构。

2)基于数据库结构和处理需求的应用程序的设计原则。这些输出一般以说明书的形式出现。[考点]数据库系统的组成与结构

15.

SQL语句的执行过程有哪些?正确答案:Oracle数据库里SQL语句的执行过程可以如下图所示。

在上图中,可以看到SQL语句的执行过程大致分为以下几个步骤:

1)当用户提交待执行的目标SQL后,Oracle首先会对目标SQL进行解析。在这个过程中,Oracle会先执行对目标SQL的语法、语义和权限的检查:

①语法检查(SyntaxCheck)是检查目标SQL的拼写是否正确,例如,错将关键字“FROM”写成“FORM”,将“SELECT”写成“SELET”等。

②语义检查(SemanticCheck)是检查SQL语句中的访问对象是否存在及该用户是否具备相应的权限。

2)如果目标SQL不能通过上述语法、语义和权限的检查,那么该目标SQL将解析失败。如果目标SQL能通过上述检查,那么接下来Oracle就会去SGA的共享池中的库缓存中查找是否存在匹配的共享游标。如果找到了匹配的共享游标,那么Oracle就会把存储于该共享游标中的解析树和执行计划直接拿过来重用,这相当于跳过了后续的“查询转换”和“查询优化”这两个步骤,直接进入“实际执行”阶段。

3)如果找不到匹配的共享游标,就意味着此时没有可以被重用的解析树和执行计划,那么接下来整个执行过程就进入查询转换这一步。在查询转换过程中,Oracle会根据一些规则来决定是否对目标SQL执行查询转换,这些规则在Oracle不同的版本里不尽相同。在Oracle9i中,查询转换是独立于优化器的,它与优化器的类型无关,但是从Oracle10g开始,0racle会对某些类型的查询转换(比如子查询展开、复杂视图合并等)分别计算经过查询转换后的等价改写SQL的成本和原始SQL的成本。只有当等价改写后SQL的成本值小于未经过查询转换的原始SQL的成本值时,Oracle才会对目标SQL执行查询转换。在执行完查询转换后,原目标SQL可能就被Oracle改写了,当然也有可能没有改写。

4)接下来,Oracle就正式进入了查询优化这个步骤。在这个步骤里,Oracle会根据不同的优化器类型(CBO或RBO)采用不同的判断原则,从执行完查询转换后得到的目标SQL的诸多可能的执行路径中选择一条效率最高的路径来作为其执行计划,即查询优化的输入就是执行完查询转换后得到的等价改写SQL,其输出就是该目标SQL的最终执行计划。

5)在得到了目标SQL的执行计划后,接下来Oracle就会根据执行计划去实际执行该SQL,并将执行结果返回给用户。[考点]游标

16.

MVCC的含义是什么?正确答案:在多用户的系统里,假设有多个用户同时读写数据库里的一行记录,那么怎么保证数据的一致性呢?一种基本的解决方法是对这一行记录加上一把锁,将不同用户对同一行记录的读写操作完全串行化执行,由于同一时刻只有一个用户在操作,因此一致性不存在问题。但是,它存在明显的性能问题:读会阻塞写,写也会阻塞读,整个数据库系统的并发性能将大打折扣。

MVCC(Multi-VersionConcurrentControl,多版本并发控制)的目标是在保证数据一致性的前提下,提供一种高并发的访问性能。在MVCC协议中,每个用户在连接数据库时看到的是一个具有一致性状态的镜像,每个事务在提交到数据库之前对其他用户均是不可见的。当事务需要更新数据时,不会直接覆盖以前的数据,而是生成一个新的版本的数据,因此一条数据会有多个版本存储,但是同一时刻只有最新的版本号是有效的。因此,读的时候就可以保证总是以当前时刻的版本的数据可以被读到,不论这条数据后来是否被修改或删除。

大多数的MySQL事务型存储引擎,例如InnoDB、Falcon以及PBXT都不使用简单的行锁机制,它们都和MVCC机制来一起使用。MVCC不只使用在MySQL中,Oracle、PostgreSQL以及其他一些数据库系统也同样使用它。

可以将MVCC看成行级锁的一种妥协,它在许多情况下避免了使用锁,同时可以提供更小的开销。根据实现的不同,它可以允许非阻塞读,在写操作进行时,只锁定需要的记录。MVCC会保存某个时间点上的数据快照,这意味着事务可以看到一个一致的数据视图,而不管它们需要运行多久。这同时也意味着不同的事务在同一个时间点看到的同一个表的数据可能是不同的。

使用MVCC多版本并发控制相比锁定模型的主要优点是,在MVCC里,对检索(读)数据的锁要求与写数据的锁要求不冲突,所以,读不会阻塞写,而写也从不阻塞读。在数据库里也有表和行级别的锁定机制,用于给那些无法轻松接受MVCC行为的应用。不过,恰当地使用MVCC总会提供比锁更好的性能。

17.

如何查找最近1min内,最消耗CPU的SQL语句及会话信息?正确答案:最消耗CPU的SQL语句可以根据V$ACTIVE_SESSION_HISTORY视图来获取,取“SESSION_STATE='ONCPU'”,若查询最消耗I/O的SQL语句则可以取“WAIT_CLASS='USERI/O'”。[考点]性能诊断

18.

Oracle的异常可以分为哪几类?正确答案:Oracle将异常分为预定义异常、非预定义异常和自定义异常三种。

1.预定义异常(Predefined)

当PL/SQL应用程序违反了Oracle规定的限制时,就会隐含地触发一个内部异常,这就是预定义异常。预定义异常用于处理常见的Oracle错误,对这种异常情况的处理,无须在程序中定义,由Oracle自动将其触发。它们全部放在PL/SQL自带的标准包中,这样程序员就无须再次定义了。预定义异常大约有20多个,下表是一些常见的预定义异常。错误号异常错误信息名称说明ORA-01403NO_DATA_FOUNDSELECTINTO没有找到数据ORA-01422TOO_MANY_ROWSSELECTINTO返回多行ORA-06501PROGRAM_ERROR内部错误,需重新安装数据字典视图和PL/SQL包ORA-06511CURSOR_ALREADY_OPEN试图打开一个已存在的游标ORA-06530ACCESS_INTO_NULL试图为NULL对象的属性赋值ORA-01012NOT_LOGGED_ON没有连接到OracleORA-01001INVALID_CU

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论