已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面试题和笔试题:1. 对java面向对象的理解;面向对象的程序设计很接近于我们人类自然的思维,相对于面向过程的程序设计,它具有更好的可扩展性和可维护性,使我们编写的代码更健壮! 面向对象主要有四大特性:封装、抽象、继承和多态。各自定义: 封装:在面向对象语言中,封装特性是由类来体现的,我们将现实生活中的一类实体定义成类.抽象:抽象就是将一类实体的共同特性抽象出来,封装在一个抽象类中,所以抽象在面向对象语言是由抽象类来体现的。继承:在面向对象语言中,就是一个类可以继承另一个类的一些特性,从而可以代码重用; 多态:多态就是通过传递给父类对象引用不同的子类对象从而表现出不同的行为,多态可为程序提供更好的可扩展性,同样也可以代码重用。2. 对ssh的理解;struts的功能,就在于搭架框架,形成jspform,actrion(即control,其应用service,service又应用了 dao)jsp,即mvc。struts的action部分又转给spring去处理。spring则简化了事务处理。hibernate的作用在于简 化了sql代码的处理。spring不单要在struts的action中起作用,也要为hibernate产生数据源和SessionFactory。 3. 说一下mvc的模式的理解;MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层模型层、视图层、控制层。4. Xml的解析方法,区别是什么;有DOM,SAX,STAX等DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问5. Webservice的了解; 1,什么是 Web Service ? Web Service 就是一个网络组件(一个可以通过网络访问的程序)。 它有一个或多个端口(Port),这些端口用于接收客户端的请求,并返回响应 请求和响应的 都是一种基于XML的消息。 不过这种消息遵循特定的格式(SOAP )。 2,怎样调用 Web Service? 每个Web Service 都有一个描述文件(WSDL ), 它描述 一个 Web Service 的如下方面: (1)服务的端口(接收SOAP消息的端口) (2)服务提供的操作 (3)操作的输入输出格式的定义(通过XMLSchema 定义输入输出格式) 有了Web Service 的描述文件(WSDL ),我们就知道怎样调用这个Web Service 中定义的操作了。 (1)通过服务提供的操作找到你想调用的操作 (2)找到这个操作的输入格式的定义(XMLSchema ),按照这种输入格式构造一个SOAP消息 (3)将这个SOAP消息发送到服务的指定端口 (4)准备接收一个从Web Service服务器返回的 SOAP 响应吧 ! 3,Web Service服务器 一个Web Service服务器,本质上和一个Web服务器是相同的。 它主要做下面这些事: - 监听网络端口(监听服务端口) - 接收客户端请求(接收SOAP请求) - 解析客户端请求(解析SOAP消息,将SOAP消息转换为数据对象) - 调用业务逻辑 (调用Web Service实现类的特定操作,参数是由SOAP消息 转换而来的数据对象) - 生成响应 (将返回值转换为SOAP消息) - 返回响应 (返回SOAP响应)6. Struts的工作原理; 1、初始化,读取struts-config.xml、web.xml等配置文件(所有配置文件的初始化)2、发送HTTP请求,客户端发送以.do结尾的请求3、填充FormBean(实例化、复位、填充数据、校验、保存)4、将请求转发到Action(调用Action的execute()方法)5、处理业务(可以调用后台类,返回ActionForward对象)6、返回目标响应对象(从Action返回到ActionServlet)7、转换Http请求到目标响应对象(查找响应,根据返回的Forward keyword)8、Http响应,返回到Jsp页面7. Decode函数的作用; DECODE函数的作用:它可以将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值.。例子:select decode(sal,800,八百,1000,一千,其他金额)from emp where empno=7788;8. 如何删除一个表中重复的数据;delete from tablename where id not in(select max(id) from tablename group by filedname);79. 对事物的理解;通常的观念认为,事务仅与数据库相关,事务必须服从ISO/IEC所制定的ACID原则,ACID是: 原子性(atomicity:事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。 一致性(consistency):一致性表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态。 隔离性(isolation):隔离性表示在事务执行过程中对数据的修改,在事务提交之前对其他事务不可见。 持久性(durability):持久性表示已提交的数据在事务执行失败时,数据的状态都应该正确。Java事务的类型有三种:JDBC事务、JTA(Java Transaction API)事务、容器事务。10. 你觉得代码规范重要吗; 重要。规范可以尽量避免bugs的数量,和减轻开发leader去复查代码花费的精力。11. 在没有主键的情况下,如何删除表中重复的数据,请举例说明;Delete from emp where rowed not in (select max(rowid) from emp group by empno ); 12. Ajax的工作流程; Ajax的工作原理相当于在用户和服务器之间加了个中间层,使用户操作与服务器响应异步化。并不是所有的用户请求都提交给服务器,像些数据验证和数据处理等都交给Ajax引擎自己来做, 只有确定需要从服务器读取新数据时再由Ajax引擎代为向服务器提交请求。Ajax其核心只有JavaScript、XMLHTTPRequest和DOM。13. String 和StringBuffer的区别; String:是对象不是原始类型.为不可变对象,一旦被创建,就不能修改它的值.对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去.String 是final类,即不能被继承.StringBuffer:是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象它只能通过构造函数来建立, :不能通过付值符号对他进行付值.。字符串连接操作中StringBuffer的效率要比String高:14. Java中的异常有哪些,怎么处理;算术异常类:ArithmeticExecption空指针异常类:NullPointerException类型强制转换异常:ClassCastException数组负下标异常:NegativeArrayException数组下标越界异常:ArrayIndexOutOfBoundsException违背安全原则异常:SecturityException文件已结束异常:EOFException文件未找到异常:FileNotFoundException字符串转换为数字异常:NumberFormatException操作数据库异常:SQLException输入输出异常:IOException方法未找到异常:NoSuchMethodExceptionJava的异常处理是通过5个关键字来实现的:try,catch,throw,throws,finally。15. 接口和继承的区别;继承是减少代码的冗余度,接口是实现相应方法的模板16. 表单里面get和post有什么不同; 1.get是从服务器上获取数据,post是向服务器传送数据。2.get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。3.对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。4.get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。5.get安全性非常低,post安全性较高。17. 请求转发和重定向的不同; 重定向与转发的区别:1.重定向访问服务器两次,转发只访问服务器一次。2.重定向可以看见目标页面的URL,转发只能看见第一次访问的页面URL,以后的工作都是有服务器来做的。3.重定向跳转后必须加上return,要不然页面虽然跳转了,但是还会执行跳转后面的语句,转发是执行了跳转页面,下面的代码就不会在执行了。4.在request级别使用信息共享,使用重定向必然出错!18. Jsp里面的Application相当于什么;相当于ServletContext服务器的启动和关闭决定了application对象的生命。它是ServletContext的一个实例19. JDK的配置;配置JDK: (1)右击【我的电脑】-【属性】-【高级】-【环境变量】(2)JDK安装路径:D:/Java/jdk1.5.0_04(根据个人情况,我自己装在D盘) 这里我们首先了解在环境变量中两个符号的用途: . 表示在当前目录下寻找;表示不同路径的分隔符 %JAVA_HOME%表示名称为JAVA_HOME的路径 方式一: 【系统变量】-【新建】 变量名:JAVA_HOME 变量值:D:/Java/jdk1.5.0_04(安装路径) 【系统变量】-【新建】 变量名:path 变量值:%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin在系统变量中如果已有classpath不用新建,在变量值的最前面加入.;%JAVA_HOME%/lib/tools.jar;%JAVA_HOME%/lib/dt.jar; 方式二: path = D:/Java/jdk1.5.0_04/bin;D:/Java/jdk1.5.0_04/jre/bin classpath= D:/Java/jdk1.5.0_04/lib/dt.jar;D:/Java/jdk1.5.0_04/lib/tools.jar; *PATH里面的路径应尽量放在最前面,例如安装了ORACLE后自带的JDK1.3.1会在最前面导致启动IDE出错!【运行】-CMD:输入JAVAC -VERSION 得到当前版本。20. 服务器的配置;21. 抽象类与接口的区别; 含有abstract修饰符的class即为抽象类,abstract 类不能创建的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。下面比较一下两者的语法区别:1.抽象类可以有构造方法,接口中不能有构造方法。2.抽象类中可以有普通成员变量,接口中没有普通成员变量3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。5. 抽象类中可以包含静态方法,接口中不能包含静态方法6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。7. 一个类可以实现多个接口,但只能继承一个抽象类。下面接着再说说两者在应用上的区别:接口更多的是在系统架构设计方法发挥作用,主要用于定义模块之间的通信契约。而抽象类在代码实现方面发挥作用,可以实现代码的重用,例如,模板方法设计模式是抽象类的一个典型应用,假设某个项目的所有Servlet类都要用相同的方式进行权限判断、记录访问日志和处理异常,那么就可以定义一个抽象的基类,让所有的Servlet都继承这个抽象基类,在抽象基类的service方法中完成权限判断、记录访问日志和处理异常的代码,在各个子类中只是完成各自的业务逻辑代码22. 重写和重载的区别; 方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现。重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被屏蔽了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型或有不同的参数次序,则称为方法的重载(Overloading)。不能通过访问权限、返回类型、抛出的异常进行重载。23. 字符集编码的处理; 24. 会写PL/SQL吗;25. 分组查询的作用;26. Oracle中有哪些聚合函数; Max() min() count() sum() avg() variance() stddev()27. Jsp中的内置对象;request 用户端请求,此请求会包含来自GET/POST请求的参数 response 网页传回用户端的回应 pageContext 网页的属性是在这里管理 session 与请求有关的会话期 application servlet 正在执行的内容 out 用来传送回应的输出 config servlet的构架部件 page JSP网页本身 exception 针对错误网页,未捕捉的例外28. 查询表中的数据时,如何去除表中的Null值; update tname set Column=nvl(Column,0.0);29. 存储过程与函数的区别; 1. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。 2. 对于存储过程来说可以返回参数,而函数只能返回值或者表对象。 3. 存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。 4. 当存储过程和函数被执行的时候,SQL Manager会到procedure cache中去取相应的查询语句,如果在procedure cache里没有相应的查询语句,SQL Manager就会对存储过程和函数进行编译。 Procedure cache中保存的是执行计划 (execution plan) ,当编译好之后就执行procedure cache中的execution plan,之后SQL SERVER会根据每个execution plan的实际情况来考虑是否要在cache中保存这个plan,评判的标准一个是这个execution plan可能被使用的频率;其次是生成这个plan的代价,也就是编译的耗时。保存在cache中的plan在下次执行时就不用再编译了。30. 事务的几个特性; 原子性、一致性、分离性、持久性(1) 原子性 事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。这种特性称为原子性。 事务的原子性要求,如果把一个事务可看作是一个程序,它要么完整的被执行,要么完全不执行。就是说事务的操纵序列或者完全应用到数据库或者完全不影响数据库。这种特性称为原子性。 假如用户在一个事务内完成了对数据库的更新,这时所有的更新对外部世界必须是可见的,或者完全没有更新。前者称事务已提交,后者称事务撤消(或流产)。DBMS必须确保由成功提交的事务完成的所有操纵在数据库内有完全的反映,而失败的事务对数据库完全没有影响。(2) 一致性 事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态。这种特性称为事务的一致性。假如数据库的状态满足所有的完整性约束,就说该数据库是一致的。一致性处理数据库中对所有语义约束的保护。假如数据库的状态满足所有的完整性约束,就说该数据库是一致的。例如,当数据库处于一致性状态S1时,对数据库执行一个事务,在事务执行期间假定数据库的状态是不一致的,当事务执行结束时,数据库处在一致性状态S2。(3) 分离性分离性指并发的事务是相互隔离的。即一个事务内部的操作及正在操作的数据必须封锁起来,不被其它企图进行修改的事务看到。 分离性是DBMS针对并发事务间的冲突提供的安全保证。DBMS可以通过加锁在并发执行的事务间提供不同级别的分离。假如并发交叉执行的事务没有任何控制,操纵相同的共享对象的多个并发事务的执行可能引起异常情况。DBMS可以在并发执行的事务间提供不同级别的分离。分离的级别和并发事务的吞吐量之间存在反比关系。较多事务的可分离性可能会带来较高的冲突和较多的事务流产。流产的事务要消耗资源,这些资源必须要重新被访问。因此,确保高分离级别的DBMS需要更多的开销。(4)持久性持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失。即一旦一个事务提交,DBMS保证它对数据库中数据的改变应该是永久性的,耐得住任何系统故障。持久性通过数据库备份和恢复来保证。持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失。即对已提交事务的更新能恢复。一旦一个事务被提交,DBMS必须保证提供适当的冗余,使其耐得住系统的故障。所以,持久性主要在于DBMS的恢复性能。31. 在一张表中插入一个字段;alter table tablename add column cloumnname;32. Cms是什么;CMS是Content Management System的缩写,意为“内容管理系统”。CMS具有许多基于模板的优秀设计,可以加快网站开发的速度和减少开发的成本。CMS的功能并不只限于文本处理,它也可以处理图片、Flash动画、声像流、图像甚至电子邮件档案。CMS其实是一个很广泛的称呼,从一般的博客程序,新闻发布程序,到综合性的网站管理程序都可以被称为内容管理系统。根据不同的需求,CMS有几种不同的分类方法。比如,根据应用层面的不同,可以被划分为: 重视后台管理的CMS 重视风格设计的CMS 重视前台发布的CMS等33. 项目组的测试工具; 功能测试:1. WinRunner/QuickTest Pro2. QARun3. Rational Robot/Functional Tester性能/负载/压力测试:1. LoadRunne2. WebLoad3. E-Test Suite4. QALoad5. Benchmark Factory6. JMeter7. WAS8. ACT9. OpenSTA10. PureLoad安全测试工具:Acunetix Web Vulnerability Scan链接测试工具:1. HTML Link Validator2. Xenu Link Sleuth3. Web Link Validator测试管理1. TestDirector MI的测试管理工具,可以与winrunner、Loadrunner、QuickTestPro进行集成。除了可以跟踪Bug外,还可以编写测试用例、管理测试进度等等,是测试管理的首选软件。 2. TestManager Rational Testsuite中的一员,可以用来编写测试用例、生成Datapool、生成报表、管理缺陷以及日志等等。是一个企业级的强大测试管理工具。缺点是必须和其它组件一起使用,测试成本比较高。 3. TrackRecord 一款擅长于Bug管理的工具,与TestDirecotr和Testmanager比较起来是很light的。 4. TestTrack/Bugzilla TestTrack为Seapine公司的产品,在国内应该是应用比较多的一个产品缺陷的记录及跟踪工具,它能够为你建立一个完善的Bug跟踪体系,包括报告、查询并产生报表、处理解决等几个部分。它的主要特点为:基于Web方式,安装简单;有利于缺陷的清楚传达;系统灵活,可配置性很强;自动发送Email。Bugzilla为开源缺陷记录和跟踪工具,最大好处是免费。 5. Jira 是一个Bug管理工具,自带一个Tomcat 4;同时有简单的工作流编辑,可用来定制流程;数据存储在HSQL数据引擎中,因此只要安装了JDK这个工具就可以使用。相比较Bugzilla来说有不少自身的特点,不过可惜它并不是开源工具,有Lisence限制。34. 索引(数据库中如何创建,什么时候创建,在哪些字段类型上创建) create index i_sidCard on student(sidCard);索引对于性能而言重要:在执行包含where子句的任何sql 语句时, oracle必须确定要选择或修改的行,第二种可以使用索引情况是排序。第三种情况:有助于提高性能是在联接时。不过此时,Oracle仍会根据表的大小和可用的内存资源做出选择:将表扫描到内存中并在那里将它们联接在一起可能比使用索引的速度更快。嵌套循环联接(nested loop join)技术使用另一个表上的索引遍历一个表来定位匹配行,这通常是一个“磁盘密集行操作”。哈希联接(hash join)技术将整个表读入内存,将其转换为哈希表,然后使用哈希法定位匹配的行,这是一个“内存和CPU更为密集型”的操作。排序合并联接(sort merge join)在联接列上排序表,然后将它们合并在一起,这通常是磁盘、内存和cpu资源之间的折中。如果没有索引,oracle将在可用的联接技术方面受到严重限制。1、表的主键、外键必须有索引;2、数据量超过300的表应该有索引;3、经常与其他表进行连接的表,在连接字段上应该建立索引;4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;5、索引应该建在选择性高的字段上;6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替: A、正确选择复合索引中的主列字段,一般是选择性较好的字段; B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否 极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引; C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引; D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段; E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;8、频繁进行数据操作的表,不要建立太多的索引;9、删除无用的索引,避免对执行计划造成负面影响;以上是一些普遍的建立索引时的判断依据。一言以蔽之,索引的建立必须慎重,对每个索引的必要性都应该经过仔细分析,要有建立的依据。因为太多的索引与不充分、不正确的索引对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。 另外,过多的复合索引,在有单字段索引的情况下,一般都是没有存在价值的;相反,还会降低数据增加删除时的性能,特别是对频繁更新的表来说,负面影响更大。1,不要为大字段建立索引,会占用太多存储空间,影响性能,例如,int(4字节),bigint(8字节)2,不要为不常用或者重复记录多的字段建立索引3,索引尽量建立在定长字段上,尽量用数字型,不用字符串型,非用时候,用char(数字),char是定长的,效率略高于varchar,nvarchar,这两个节省了空间4,经常增删改的表,不要建立太多索引5,删除无用的索引6.将列定义为not null, 这样处理更快,节省空间,不用字段检查是否存在null35. 创建用户语句; create user 用户名 identified by 密码36. 存储过程中异常处理; 37. 数据库使用工具;38. 数据库实例的理解(用户与数据库之间充当的什么角色);39. 对游标的理解;游标分为显示游标和隐式游标。Oracle游标是一种用于轻松的处理多行数据的机制。如果没有游标,Oracle开发人员必须单独地、显式地取回并管理游标查询选择的每一条记录。游标的另一项功能是,它包含一个跟踪当前访问的记录的指针,这使程序能够一次处理多条记录。40. 给一个表加了一个列; alter table Tablename add(columnname varchar2(20);41. Oracle 连其他电脑的服务器改哪个文件; 42. 怎样理解varchar和varchar2;1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节;2.VARCHAR2把空串等同于null处理,而varchar仍按照空串处理;3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集,大部分情况下建议使用varchar2类型,可以保证更好的兼容性。43. 理解表空间; 一个表空间就是一片磁盘区域,他又一个或者多个磁盘文件组成,一个表空间可以容纳许多表、索引或者簇等 每个表空间又一个预制的打一磁盘区域称为初始区间(initial extent)用完这个区间厚在用下一个,知道用完表空间,这时候需要对表空间进行扩展,增加数据文件或者扩大已经存在的数据文件44. 你的优势是什么;45. 哪些操作有事务; 操作数据库跟事务有关。46. 对SAG的理解; Sag是一个CouchDB的PHP客户端库,其设计目的是使用最简单的方法提供最强大的CouchDB操作,Sag库可以使用PHP内置的数据结构(字符串,数组,对象等)作为数据操作媒介,让数据操作更简单。47. 简述你最近做过的项目,说说你的收获; 48. 你们是如何对源代码进行管理的;1. 彻底抛弃 VSS! 2. 没有进入版本库,它就不存在3. 尽早提交,尽快提交,经常提交 4. 在提交前检查你的更改5. 认真填写“commit messages”6. 你必须自己提交代码,而不是让别人代劳7. 数据库的版本控制是必须的49. 说说常用的集合,各个集合之间的区别;List/Set/Map1ArrayList: 元素单个,效率高,多用于查询2Vector: 元素单个,线程安全,多用于查询3LinkedList:元素单个,多用于插入和删除4HashMap: 元素成对,元素可为空5HashTable: 元素成对,线程安全,元素不可为空50. 说说java中的static; static可以修饰成员变量、方法、游离块、内部类。a) 类中的static变量在类加载时首先被初始化,且只能初始化一次.b) 所有对象共享类中的static变量.c) 在创建子类的对象时,先初始化父类的static变量,再初始化子类的static.61.jsp中和的区别前者是指令元素、后者是行为元素。jsp:include动作和include指令之间的根本性的不同在于它们被调用的时间。jsp:include动作在请求期间被激活,而include指令在页面转换期间被激活。62.JAVA中字符编码集处理63.说说游标本篇主要内容如下:4.1游标概念4.1.1处理显式游标4.1.2处理隐式游标4.1.3关于NO_DATA_FOUND和%NOTFOUND的区别4.1.4使用游标更新和删除数据4.2游标变量4.2.1声明游标变量4.2.2游标变量操作游标的使用在PL/SQL程序中,对于处理多行记录的事务经常使用游标来实现。4.1游标概念在PL/SQL块中执行SELECT、INSERT、DELETE和UPDATE语句时,ORACLE会在内存中为其分配上下文区(ContextArea),即缓冲区。游标是指向该区的一个指针,或是命名一个工作区(WorkArea),或是一种结构化数据类型。它为应用等量齐观提供了一种对具有多行数据查询结果集中的每一行数据分别进行单独处理的方法,是设计嵌入式SQL语句的应用程序的常用编程方式。在每个用户会话中,可以同时打开多个游标,其数量由数据库初始化参数文件中的OPEN_CURSORS参数定义。对于不同的SQL语句,游标的使用情况不同:SQL语句游标非查询语句隐式的结果是单行的查询语句隐式的或显示的结果是多行的查询语句显示的4.1.1处理显式游标1.显式游标处理显式游标处理需四个PL/SQL步骤:l定义/声明游标:就是定义一个游标名,以及与其相对应的SELECT语句。格式:CURSORcursor_name(parameter,parameter)RETURNdatatypeISselect_statement;复制代码游标参数只能为输入参数,其格式为:parameter_nameINdatatype:=|DEFAULTexpression在指定数据类型时,不能使用长度约束。如NUMBER(4),CHAR(10)等都是错误的。RETURNdatatype是可选的,表示游标返回数据的数据。如果选择,则应该严格与select_statement中的选择列表在次序和数据类型上匹配。一般是记录数据类型或带“%ROWTYPE”的数据。l打开游标:就是执行游标所对应的SELECT语句,将其查询结果放入工作区,并且指针指向工作区的首部,标识游标结果集合。如果游标查询语句中带有FORUPDATE选项,OPEN语句还将锁定数据库表中游标结果集合对应的数据行。格式:OPENcursor_name(parameter=value,parameter=value);在向游标传递参数时,可以使用与函数参数相同的传值方法,即位置表示法和名称表示法。PL/SQL程序不能用OPEN语句重复打开一个游标。l提取游标数据:就是检索结果集合中的数据行,放入指定的输出变量中。格式:FETCHcursor_nameINTOvariable_list|record_variable;执行FETCH语句时,每次返回一个数据行,然后自动将游标移动指向下一个数据行。当检索到最后一行数据时,如果再次执行FETCH语句,将操作失败,并将游标属性%NOTFOUND置为TRUE。所以每次执行完FETCH语句后,检查游标属性%NOTFOUND就可以判断FETCH语句是否执行成功并返回一个数据行,以便确定是否给对应的变量赋了值。l对该记录进行处理;l继续处理,直到活动集合中没有记录;l关闭游标:当提取和处理完游标结果集合数据后,应及时关闭游标,以释放该游标所占用的系统资源,并使该游标的工作区变成无效,不能再使用FETCH语句取其中数据。关闭后的游标可以使用OPEN语句重新打开。格式:CLOSEcursor_name;注:定义的游标不能有INTO子句。例1.查询前10名员工的信息。DECLARECURSORc_cursorISSELECTfirst_name|last_name,SalaryFROMEMPLOYEESWHERErownum11;v_enameEMPLOYEES.first_name%TYPE;v_salEMPLOYEES.Salary%TYPE;BEGINOPENc_cursor;FETCHc_cursorINTOv_ename,v_sal;WHILEc_cursor%FOUNDLOOPDBMS_OUTPUT.PUT_LINE(v_ename|-|to_char(v_sal);FETCHc_cursorINTOv_ename,v_sal;ENDLOOP;CLOSEc_cursor;END;复制代码例2.游标参数的传递方法。DECLAREDeptRecDEPARTMENTS%ROWTYPE;Dept_nameDEPARTMENTS.DEPARTMENT_NAME%TYPE;Dept_locDEPARTMENTS.LOCATION_ID%TYPE;CURSORc1ISSELECTDEPARTMENT_NAME,LOCATION_IDFROMDEPARTMENTSWHEREDEPARTMENT_ID=30;CURSORc2(dept_noNUMBERDEFAULT10)ISSELECTDEPARTMENT_NAME,LOCATION_IDFROMDEPARTMENTSWHEREDEPARTMENT_ID=dept_no;CURSORc3(dept_noNUMBERDEFAULT10)ISSELECT*FROMDEPARTMENTSWHEREDEPARTMENTS.DEPARTMENT_ID20);LOOPFETCHc3INTOdeptrec;EXITWHENc3%NOTFOUND;DBMS_OUTPUT.PUT_LINE(deptrec.DEPARTMENT_ID|-|deptrec.DEPARTMENT_NAME|-|deptrec.LOCATION_ID);ENDLOOP;CLOSEc3;END;复制代码2.游标属性Cursor_name%FOUND布尔型属性,当最近一次提取游标操作FETCH成功则为TRUE,否则为FALSE;Cursor_name%NOTFOUND布尔型属性,与%FOUND相反;Cursor_name%ISOPEN布尔型属性,当游标已打开时返回TRUE;Cursor_name%ROWCOUNT数字型属性,返回已从游标中读取的记录数。3.游标的FOR循环PL/SQL语言提供了游标FOR循环语句,自动执行游标的OPEN、FETCH、CLOSE语句和循环语句的功能;当进入循环时,游标FOR循环语句自动打开游标,并提取第一行游标数据,当程序处理完当前所提取的数据而进入下一次循环时,游标FOR循环语句自动提取下一行数据供程序处理,当提取完结果集合中的所有数据行后结束循环,并自动关闭游标。格式:FORindex_variableINcursor_name(value,value)LOOP-游标数据处理代码ENDLOOP;复制代码其中:index_variable为游标FOR循环语句隐含声明的索引变量,该变量为记录变量,其结构与游标查询语句返回的结构集合的结构相同。在程序中可以通过引用该索引记录变量元素来读取所提取的游标数据,index_variable中各元素的名称与游标查询语句选择列表中所制定的列名相同。如果在游标查询语句的选择列表中存在计算列,则必须为这些计算列指定别名后才能通过游标FOR循环语句中的索引变量来访问这些列数据。注:不要在程序中对游标进行人工操作;不要在程序中定义用于控制FOR循环的记录。例8:DECLARECURSORc_salISSELECTemployee_id,first_name|last_nameename,salaryFROMemployees;BEGIN-隐含打开游标FORv_salINc_salLOOP-隐含执行一个FETCH语句DBMS_OUTPUT.PUT_LINE(to_char(v_sal.employee_id)|-|v_sal.ename|-|to_char(v_sal.salary);-隐含监测c_sal%NOTFOUNDENDLOOP;-隐含关闭游标END;复制代码4.1.2处理隐式游标显式游标主要是用于对查询语句的处理,尤其是在查询结果为多条记录的情况下;而对于非查询语句,如修改、删除操作,则由ORACLE系统自动地为这些操作设置游标并创建其工作区,这些由系统隐含创建的游标称为隐式游标,隐式游标的名字为SQL,这是由ORACLE系统定义的。对于隐式游标的操作,如定义、打开、取值及关闭操作,都由ORACLE系统自动地完成,无需用户进行处理。用户只能通过隐式游标的相关属性,来完成相应的操作。在隐式游标的工作区中,所存放的数据是与用户自定义的显示游标无关的、最新处理的一条SQL语句所包含的数据。格式调用为:SQL%注:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 透镜在物理教学中的应用方案研究
- 2024年度保险合同
- 大型活动垃圾清运专项方案
- 2024年GRC技术转让合同
- 2024年建筑材料购销合同范本
- 塔吊安装质量保证合同
- 幼儿园心理咨询微信平台管理
- 2024年建筑行业冠梁工程合同
- 2024年信用担保连带责任合同
- 教育行业项目经理转正工作经验总结
- 上海市交大附中附属嘉定德富中学2024-2025学年九年级上学期期中考数学卷
- 屠宰场食品安全管理制度
- 部编版(2024秋)语文一年级上册 6 .影子课件
- 2024秋期国家开放大学专科《刑事诉讼法学》一平台在线形考(形考任务一至五)试题及答案
- 基于SICAS模型的区域农产品品牌直播营销策略研究
- 病例讨论英文
- 2024秋期国家开放大学专科《液压与气压传动》一平台在线形考(形考任务+实验报告)试题及答案
- 【课件】植物体的结构层次课件-2024-2025学年人教版生物七年级上册
- 24秋国家开放大学《0-3岁婴幼儿的保育与教育》期末大作业参考答案
- 相对湿度计算公式
- 2024版肿瘤患者静脉血栓防治指南解读 课件
评论
0/150
提交评论