数据库程序员面试分类真题8.docx

上传人:p** 文档编号:1027394 上传时间:2024-06-15 格式:DOCX 页数:16 大小:66.98KB
下载 相关 举报
数据库程序员面试分类真题8.docx_第1页
第1页 / 共16页
数据库程序员面试分类真题8.docx_第2页
第2页 / 共16页
数据库程序员面试分类真题8.docx_第3页
第3页 / 共16页
数据库程序员面试分类真题8.docx_第4页
第4页 / 共16页
数据库程序员面试分类真题8.docx_第5页
第5页 / 共16页
数据库程序员面试分类真题8.docx_第6页
第6页 / 共16页
数据库程序员面试分类真题8.docx_第7页
第7页 / 共16页
数据库程序员面试分类真题8.docx_第8页
第8页 / 共16页
数据库程序员面试分类真题8.docx_第9页
第9页 / 共16页
数据库程序员面试分类真题8.docx_第10页
第10页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《数据库程序员面试分类真题8.docx》由会员分享,可在线阅读,更多相关《数据库程序员面试分类真题8.docx(16页珍藏版)》请在第壹文秘上搜索。

1、数据库程序员面试分类真题8筒答题1. 在OraCle中,什么是异常?正确答案:异常(EXCePtion)处理是用来处理正常执行过程中未预料到的事件,包括程序块的异常处理、预定义的错误和自定义错误。(江南博哥)如果P1./SQ1.程序块一旦产生异常,而程序并没有指出如何处理,那么程序就会H动终止运行。异常处理部分一般放在P1./SQ1.程序体的后半部分,结构如下。EXCEPTIONWHENfirst_exceptionTHENWHENSeCOnd_exceptionTHENWHENOTHERSTHEN考点程序处理2. Oracle的异常可以分为哪几类?正确答案:OraCle将异常分为预定义异常、

2、非预定义异常和自定义异常三种。1 .预定义异常(Predefined)当P1./SQ1.应用程序违反了Oracle规定的限制时,就会隐含地触发一个内部异常,这就是预定义异常。预定义异常用于处理常见的OraCIe错误,对这种异常情况的处理,无须在程序中定义,由OraCIe自动将其触发。它们全部放在P1./SQ1.自带的标准包中,这样程序员就无须再次定义了。预定义异常大约有20多个,下表是些常见的预定义异常。借误号异常错误信息名称说明ORA-01403NODATAFOUNDSE1.ECTINTO没有找到数据ORA-01422TOOMANYROWSSE1.ECTINTO返回多行OKA-PROGRAM

3、ERROR内部错误,需重新安装数据字典视图和06501P1./SQ1.包OKA-06511CURSORA1.READYOPEN试图打开一个已存在的游标OKA-06530ACCESSINTONU1.1.试图为NU1.1.对象的属性赋值OKA-01012NOT1.OGGEDON没有连接到OracleORA-00051TIMEOUTj)n_resource在等待资源时发生超时ORA-00001DUP_VA1._ON_INDEX试图破坏一个唯一性限制ORA-010171.oGI_DENIED无效的用户名/口令ORA-01476ZEROJ)IVIDE试图被零除OKA-01722INA1.ID转换一个数字

4、失败OKA-06500STORAGEERROR内存不够或内存被破坏触发的内部错误OKA-06502VA1.UEERROR赋值操作,变量长度不足,触发该异常OKA-06504ROWTYPEMISMATCH宿主游标变量与P1./SQ1.变量有不兼容行类型OKA-06531CO1.1.ECTIONISNU1.1.试图给没有初始化的鼓套式变量或者VARRY变量赋值TRANSACTION_BACKEDJ)UT由于发生死锁事务被撤销S1.BSCRIPOUTSIDE1.IMlT对嵌套或VARRAY索引使用了负数ORA01001INA1.ID.CURSOR试图使用一个无效的游标ORA-00061OKA-065

5、32ORA-06533SUBSCRIPT_BEYOND_COUNT鬻鬻VARRAY索引的用用大于集合中兀35tfI奴2 .非预定义异常(NOnPredefined)非预定义异常用于处理预定义异常不能处理的异常,即其他标准的Oracle错误。使用预定义异常只能处理系统预定义的20多个OraClC错误,而当使用P1./SQ1.开发应用程序时,可能会遇到其他的一些OraCle错误。例如,在P1./SQ1.块中执行DV1.语句时违反了约束规定等。在这样的情况下,就可以使用非预定义异常来处理。Oracle提供了2个函数SQ1.CODE和SQ1.ERRM用于返回错误信息。1)SQ1.CODE:返回错误代码

6、。2)SQ1.ERRM:返回与错误代码关联的消息。这样就可以在借误口志表中记录程序在执行过程中发生的错误信息了。3 .自定义异常(USeJdCfine)自定义异常用于处应与Oracle错误无关的其他情况。对这种异常情况的处理,需要用户在程序中定义,然后显式地在程序中将其触发。预定义异常和自定义异常都是与Oracle错误相关的,并且出现的Oracle错误会隐含地触发相应的异常;而自定义异常与OraCIe错误没有任何关联,它是由开发人员为特定情况所定义的异常。当与一个异常相关的错误出现时,就会隐含触发该异常。用户定义异常是通过显式使用RAISE语句来触发。当触发一个异常时,控制程序就转到异常块部分

7、,执行错误处理代码。考点程序处理3. 在OraCIe中,抛出异常有哪几种方式?正确答案:有三种方式可以抛出异常,分别是通过P1./SQ1.运行引擎、使用RAlSE语句和调用RAISE_APP1.ICATION_ERROR存储过程。当薮据库或P1./SQ1.在运行时发生了错误,此时的异常可以通过P1./SQ1.运行时的引擎自动抛出异常,这个无须过度关注。第二种是通过RAlSE语句抛出异常。显式抛出异常是程序员处理声明异常的习惯用法,但RAISE不限于声明了的异常,它可以抛出任何异常。比如卜.面一个订单输入的例子,若订单大于库存数量,则抛出异常,并且捕获该异常、处理该异常。第三种抛出异常的办法是通

8、过RAISEAPP1.ICATION.ERROR语句。RAISE_APplJCATloxERROR是一个内建函戒,它用于抛出一个异常并给异常赋予一个错误号以及错镇信息,它将应用程序专有的错误从服务器端转达到客户端应用程序(其他机器上的SQ1.*Plus或者其他前台开发语言)。该函数可以在P1./SQ1.程序块的执行部分和异常部分被调用。raiseapplicatioN.BRROR的声明:RAISE_APP1.ICATION_ERROR(ERROR_NUMBERINNUMBER,MESSAGEINVRCHR2,TRUE,FA1.SE)错误号的范围是-20000-20999,这样就不会与Oracl

9、e的任何错误代码发生冲突。错误信息是文本字符串,最多为2048B,TRUE和FA1.SE表示是添加(TRUE)错误堆栈(ERRORSTACK)还是覆祕(OVERWRITE)错误堆栈(FA1.SE)0默认情况下是F1.SERAISEAPP1.ICTION_ERROR使用示例如下:IEPRoDUCT_NOT_FOUNDTHENRA1SE_A1T1.1CAT1ON_ERROR(-2O123,INVA1.DBKODUCTCODE,TRUE):ENDIF;需要说明的一点,当该函数用于触发器并且触发事件在以下情况的时候并不能抛出错误:1)触发事件为AFTERSTARTUPONDATABASEw或“BEFO

10、RESHUTDOWNONDATABASEwo2)触发事件为rtAFTER1.OGONONDATABASE且用户拥有“ADMINISTERDATABASETRlGGER”权限。3)触发事件为rtAFTER1.OGONONSCHEMAw且用户拥有“A1.TERANYTRIGGERm权限。考点程序处理4. 如何捕获存储过程中出现异常的行号?正确答案:使用函数DBMSjJTI1.lTY.EORMAT_ERKORBACKTRACE可以获取到出现异常时候的程序的行号,而函数DBMS_IT11.1TY.FORMATERROR_STACK可以获取到出现异常时的错误信息,作用和SQ1.ERRM一样。考点程序处理

11、5. Oracle中的触发器有哪些类型?正确答案:OraCIe数据库有4种触发器,分别是DM1.触发器、替代触发器(INSTEADOF触发器)、DD1.触发器和系统触发器。一般的应用系统中都使用到DM1.触发器和替代触发器,而DD1.和系统触发器是DBA管理数据库用得比较多。下图是OraCIe触发器的分类图。DATABASE触发器6. OraCle的自治事务是什么?正确答案:Orac1e的自治事务(AUlOnOnX)USTransaction)是将一个主事务分割成几个子事务,在执行完子事务以后再继续执行主事务。这里的关键是,子事务是独立于主事务的,子事务中的Ro1.1.BACK和COMMIT操

12、作只会影响子事务中的DM1.操作;同样,主事务中的RO1.1.BACK和CoMMlT操作只会影响主事务中的DM1.操作,而不会影响子事务中的操作。在子事务中已经COMMlT的操作,不会被主事务中的RO1.1.BACK撤销。可以在程序开头使用如下命令实现FI治事务:PRAGMAAUTONOMOUS_TRANSACTION;定义自治事务必须遵循以下规则:1)如果要被定义为自治事务的程序是匿名的,那么它必须是-个最外层的程序块。2)如果要被定义为自治事务的程序不是匿名的,那么它必须是函数或者存储过程。在一个包中,只有其中的函数或存储过程能够被定义成自治事务。整个包不能声明为自治事务。3)一个对象的方

13、法可以声明为自治事务。4)触发器可以声明为自治事务。5)内嵌程序块不能声明为I?治事务。需要注意的是,对于一个匿名的自治事务程序块来说,只有这个块的BEGIN和END之间的代码被看作是自治事务。自治事务可以用来解决“0RAT4551:无法在查询中执行DM1.操作”错误。触发器无法包含COMMIT语句,除非有PRAGMAAUTONOMOUS.TRANSACTION标记。但是,只有触发中的语句才能被提交,主事务则不行。考点程序处理7. OraCIe常用日期处理函数有哪些?这些函数可以实现哪些功能?正确答案:有关日期函数需要了解以卜几点:1)日期函数用于处理DATE类型的数据。2)在日期上加上或减去

14、一个数字结果仍为口期。3)两个口期相减返回口期之间相差的天数。4)默认情况下,日期格式为DD-MoN-RR。5)查询当前数据库日期格式的命令:SE1.ECTSYS-CONTEXT(,USERENV,N1.S-DATE-FORMT,)FKOMDUA1.;。6)SYSDTE:该函数返回系统日间。7)1.AST_DAY(D):返回指定日期所在月份的最后一天。8)MONTHS.BETWEEN:表示两个日期的月份之差,即在给定的两个日期之间有多少个月。9) ADDJIONTHS(DtN):该函数将给定的日期增加N个月。当N为正数时,该函数将给定的日期增加N个月,为负数时减去N个月。该函数很常用,可以用来

15、表示上个月、下个月、去年和下一年等。10)NEXTDAY(D,N):返回以时间点D为基准(开始),下一个“目标日N”的日期.由于数据库以数字方式存储口期,因此,口期类型可以进行算术运算(加法或减法)。例如,可以给口期增加或减去一个数字,得到的结果还是一个口期值,两个口期相减,得到两个日期之间的天数,用小时除以24就可以得到天数。另外,日期中常用到的一个修改R期语言的SQ1.:修改为英文:A1.TERSESSIONSETN1.SJANGUAGE=AMERICAN;修改为中文:A1.TERSESSIONSETN1.SJ.ANGUAGE=SIMP1.IFIEDCHINESE*;在英语的环境中,查询星期时要用英支,示例代码如下:SYS(lhrdb21SE1.ECTNEXTDAY(SYSDATE,星期二)FRO

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 数据结构与算法

copyright@ 2008-2023 1wenmi网站版权所有

经营许可证编号:宁ICP备2022001189号-1

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!