java、sql、oracle面试题汇总

合集下载

oracle数据库面试题2023

oracle数据库面试题2023

oracle数据库面试题2023很高兴您关注数据库面试题,以下是一些常见的Oracle 数据库面试题及其答案:1. 什么是Oracle数据库?Oracle数据库是由Oracle公司开发的一种关系型数据库管理系统(RDBMS),它是目前世界上最流行的商用数据库之一。

Oracle数据库提供了数据存储、管理和操作等功能,被广泛应用于企业级应用系统。

2. 请解释Oracle数据库的架构。

Oracle数据库的架构由三个主要组件组成:实例(Instance)、内存结构和物理存储。

实例是指Oracle数据库在内存中的运行进程,负责管理和控制数据库的访问和操作。

内存结构包括SGA(System Global Area)和PGA(Program Global Area),用于存储数据库和用户进程所需的数据和信息。

物理存储则指数据库文件和表空间,用于持久化地存储数据。

3. 什么是表空间(Tablespace)?表空间是Oracle数据库中用于存储表、索引、视图等数据库对象的逻辑容器。

每个表空间由一个或多个数据文件组成,这些文件可以分布在不同的物理存储介质上。

通过使用表空间,我们可以方便地管理数据库对象的存储和分配。

4. 请解释Oracle的归档模式(Archivelog Mode)和非归档模式(Noarchivelog Mode)的区别。

在归档模式下,Oracle数据库会将所有的重做日志文件(Redo Log)保存下来,以便进行数据恢复和备份。

这种模式适用于对数据完整性和可恢复性要求较高的场景。

而非归档模式下,Oracle数据库不会保存重做日志文件,只保留最新的重做日志。

这种模式适用于对数据恢复要求较低、但对性能要求较高的场景。

5. 如何查看Oracle数据库中的当前用户?在Oracle数据库中,可以通过以下SQL语句查看当前用户:```SELECT USER FROM DUAL;```这会返回当前会话的用户名。

6. 如何备份和恢复Oracle数据库?Oracle数据库的备份和恢复可以使用多种方法,其中常用的有物理备份和逻辑备份。

Java面试整理及Oracle答案

Java面试整理及Oracle答案

1.Servlet的生命周期Servlet生命周期分为三个阶段:1,初始化阶段调用init()方法2,响应客户请求阶段调用service()方法3,终止阶段调用destroy()方法在Servlet的整个生命周期内,init()方法只被调用一次。

2.Oracle中1403指的是什么错误,怎样解决未找到数据3.C语言中静态属性与非静态属性的区别,4.线程,进程进程是执行程序的实例.例如,当你运行记事本程序(Nodepad)时,你就创建了一个用来容纳组成Notepad。

exe的代码及其所需调用动态链接库的进程。

一个进程可以有多个线程。

线程是不能独立拥有系统资源的。

是要依赖于进程而存在的,一个进程是可以包含多个线程的,也可以只有一个线程.5.什么是工厂模式,优点是什么,怎样调用的public abstract class Product {//产品类的公共方法public void method1(){//业务逻辑处理}//抽象方法public abstract void method2();}public class ConcreteProduct1 extends Product {public void method2(){//业务逻辑处理}}public class ConcreteProduct2 extends Product {public void method2() {//业务逻辑处理}}public abstract class Creator {public abstract Product createProduct(Class<? extends Product> c);// public abstract Product createProduct()}public class ConcreteCreator extends Creator {public Product createProduct(Class<? extends Product〉 c) {Product product=null;try{product = (Product)Class.forName(c.getName()).newInstance(); } catch(Exception e) {//异常处理}return product;}}public class Client {public static void main(String[] args) {Creator creator = new ConcreteCreator();Product product = creator.createProduct(ConcreteProduct1。

Oracle面试题库-SQL

Oracle面试题库-SQL

Oracle面试题库-SQL1. ORACLE用来判断列值是否为空的操作符是____A ==NULLB IS NULLC AS NULLD NULLIS2 分析以下的SQL命令SELECT ,FROM inventory i, manufacturer mWHERE =ORDER BY ;如何修改上述命令使其成功执行()A ORDER BY descriptionB ORDER BYC WHERE =ORDER BYD ORDER BY ;3. 在客户定单表(CUSTOMER)中有一列为单价(PRICE),写一个SELECT命令显示所有单价在500以上的查语句。

A SELECT * FROM CUSTOMER WHERE PRICE>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;4. 分析以下SQL 命令:SELECT priceFROM inventoryWHERE price BETWEEN 1 AND 50AND (price IN(55, 30, 95);命令执行后的输出结果是:()A 55B 30C 95D NULL5. 分析以下的SQL 命令:SELECT manufacturer_idFROM inventoryWHERE ma nufacturer_id LIKE ‘%N\%P\%O%’ ESCAPE ‘\’;命令执行的返回结果是()A 所有包含’NPO’的纪录B 所有包含’N\P\O’的纪录C 所有包含’N%P%O’的纪录D 所有包含’%N\P\O%’的纪录6. 分析以下的SQL命令:SELECT ,FROM inventory i, manufacturer mWHERE (+) = ;WHERE 子句中的(+)是什么含义?A 将inventory表中不满足条件的记录也查出来B 将+C将manufacturer表中不满足条件的记录也查出来D 不能这样写,语法错误7. 写一SQL语句实现以下功能,把inventory表中的ORDER_DATE 值’23-MAY-00′ 显示成’01-JAN-00′A SELECT ROUND(order_date, ‘YEAR’) FROM inventory;B SELECT TO_DATE(order_date, ‘DD-MM-YY’) FROM inventory;C SELECT TO_CHAR(order_date, ‘DD-MM-YY’) FROM inventory;D 都不对8.下面的SQL命令显示的结果是什么类型:TO_DATE(’01-JAN-1998′) –TO_DATE(’01-DEC-1996′)A 数值B 字符串C 日期D 出现错误9. 简述ROUND 和TRUNC操作的区别?A ROUND在截掉数据时有四舍五入的判断,TRUNC直接按要求截掉没有进位。

java面试题库java面试题目及答案(3篇)

java面试题库java面试题目及答案(3篇)

第1篇一、基础知识1. Java简介题目:请简述Java的基本特点。

答案:- 简单易学:Java设计之初就考虑了易学性,使用面向对象编程。

- 原生跨平台:Java通过JVM(Java虚拟机)实现跨平台运行。

- 安全性:Java提供了强大的安全机制,如沙箱安全模型。

- 体系结构中立:Java不依赖于特定的硬件或操作系统。

- 高效:Java的运行速度接近C/C++。

- 多线程:Java内置多线程支持,便于实现并发处理。

- 动态性:Java在运行时可以进行扩展和修改。

2. Java虚拟机题目:请解释Java虚拟机(JVM)的作用。

答案:JVM是Java程序的运行环境,其主要作用包括:- 将Java字节码转换为本地机器码。

- 管理内存,包括堆、栈、方法区等。

- 提供垃圾回收机制。

- 管理线程和同步。

3. Java内存模型题目:请简述Java内存模型的组成。

答案:Java内存模型主要由以下部分组成:- 堆(Heap):存储对象实例和数组。

- 栈(Stack):存储局部变量和方法调用。

- 方法区(Method Area):存储类信息、常量、静态变量等。

- 本地方法栈(Native Method Stack):存储本地方法调用的相关数据。

- 程序计数器(Program Counter Register):存储线程的当前指令地址。

4. Java关键字题目:请列举并解释Java中的几个关键字。

答案:- `public`:表示访问权限为公开。

- `private`:表示访问权限为私有。

- `protected`:表示访问权限为受保护。

- `static`:表示属于类本身,而非对象实例。

- `final`:表示常量或方法不能被修改。

- `synchronized`:表示线程同步。

- `transient`:表示数据在序列化时不会被持久化。

二、面向对象编程5. 类和对象题目:请解释类和对象之间的关系。

答案:类是对象的模板,对象是类的实例。

oracle数据库面试题目(3篇)

oracle数据库面试题目(3篇)

第1篇1. 请简述Oracle数据库的体系结构,并说明各层的作用。

2. 请解释什么是Oracle实例?实例与数据库之间的关系是什么?3. 请简述Oracle数据库的存储结构,包括数据文件、控制文件、日志文件等。

4. 请说明Oracle数据库的内存结构,包括SGA、PGA等。

5. 请解释Oracle数据库的备份策略,包括全备份、增量备份、差异备份等。

6. 请说明Oracle数据库的恢复策略,包括不完全恢复、完全恢复等。

7. 请解释Oracle数据库的事务管理,包括事务的ACID特性。

8. 请说明Oracle数据库的锁机制,包括共享锁、排他锁等。

9. 请解释Oracle数据库的并发控制,包括多版本并发控制(MVCC)。

10. 请说明Oracle数据库的安全机制,包括角色、权限、用户等。

二、SQL语言1. 请简述SQL语言的组成,包括数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)等。

2. 请说明如何创建一个简单的表,包括表结构、字段类型、约束等。

3. 请编写一个查询语句,查询某个表中所有年龄大于30岁的记录。

4. 请编写一个更新语句,将某个表中年龄大于40岁的记录的年龄加1。

5. 请编写一个删除语句,删除某个表中年龄小于20岁的记录。

6. 请编写一个插入语句,插入一条记录到某个表中。

7. 请说明如何使用SQL语句实现分页查询。

8. 请说明如何使用SQL语句实现多表查询。

9. 请说明如何使用SQL语句实现子查询。

10. 请说明如何使用SQL语句实现联合查询。

三、Oracle高级特性1. 请解释什么是视图?如何创建视图?2. 请解释什么是索引?有哪些常见的索引类型?3. 请解释什么是触发器?如何创建触发器?4. 请解释什么是存储过程?如何创建存储过程?5. 请解释什么是函数?如何创建函数?6. 请解释什么是包?如何创建包?7. 请解释什么是序列?如何创建序列?8. 请解释什么是同义词?如何创建同义词?9. 请解释什么是物化视图?如何创建物化视图?10. 请解释什么是分区表?如何创建分区表?四、Oracle性能优化1. 请说明如何查看Oracle数据库的性能统计信息。

java+oracle面试题文档_答案

java+oracle面试题文档_答案

Java1.数组是否有length()方法?String是否有length()方法?数组没有length()方法,有length属性String有length()方法2.List,Set,Map是否继承自Collenction接口List,Set是3.Abstract的方法中是否能使用static、native、synchronized关键字?都不能4.是否可以继承String类否,String是final类,故不能继承。

5.两个对象值相同(x.equal(y)==true),但却可有不同的hash code,这话是否正确?不对,有相同的hash code6.Set里的元素是不重复的,那么用什么方法区别重复与否?Set 的equals()方法是做什么用途?用iterator()方法区别重复。

Equals()是判断两个Set是否相等。

7.线程同步的方法作用。

wait():使一个线程处于等待状态,并且释放所持有的对象的lock。

sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。

notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。

Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。

8.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?switch(expr1)中,expr1是一个整数表达式。

因此传递给switch 和 case 语句的参数应该是 int、 short、 char 或者byte。

long,string 都不能作用于swtich。

9.try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行?如执行请问什么时候被执行,在return前还是后?会执行,在return前执行。

oracle java 面试题及答案

oracle java 面试题及答案

oracle java 面试题及答案作为Java开发人员,参加面试是提升自己职业发展的重要方式之一。

准备面试的一个关键环节是研究和掌握常见的面试题,以便在面试时能够给出准确、清晰的答案。

本文将介绍一些常见的Oracle Java面试题以及它们的详细答案,希望能够为你的面试准备提供帮助。

一、Java基础知识1. 什么是Java虚拟机(JVM)?它是如何工作的?Java虚拟机(JVM)是Java程序的运行环境。

它负责将Java源代码编译成可以在操作系统上运行的字节码。

JVM包括类加载器、运行时数据区和执行引擎等组件。

类加载器将字节码加载到内存中,运行时数据区包括方法区、堆、栈和程序计数器,执行引擎负责执行字节码指令。

2. 什么是Java平台的特点?Java平台具有跨平台性、面向对象性、安全性和可移植性等特点。

跨平台性是指编写的Java程序可以在不同操作系统上运行;面向对象性是Java语言的特点,它支持封装、继承和多态等面向对象的编程范式;安全性是指Java虚拟机提供了安全管理器来控制程序的访问权限;可移植性是指Java程序可以在不同的硬件和操作系统上运行。

3. Java中的值传递和引用传递有什么区别?Java中的基本类型是值传递,而对象类型是引用传递。

值传递是指将变量的值复制一份传递给方法或函数,而引用传递是指将变量的引用(内存地址)传递给方法或函数。

在值传递中,形参的改变不会对实参产生影响,而在引用传递中,形参改变会影响到实参。

4. 什么是Java的自动装箱和拆箱?Java的自动装箱和拆箱是指基本类型和对应的包装类型之间的自动转换。

自动装箱是将基本类型自动转换为对应的包装类型,而拆箱是将包装类型自动转换为对应的基本类型。

例如,int类型的变量可以自动装箱为Integer对象,Integer对象可以拆箱为int类型。

5. 什么是Java的四种访问修饰符?Java的四种访问修饰符分别是public、private、protected和default (没有修饰符)。

java、sql、oracle面试题汇总

java、sql、oracle面试题汇总

1.(口述题)请简述迅雷、BT等p2p下载软件的实现原理。

如何资源分布。

解释:A想来B家做客,但是遭到了B的管家NAT B的拒绝,理由是:我从来没有听我家B提过你的名字,这时A找到了A,B都认识的朋友server,要求server给B报一个信,让B去跟管家说A是我的朋友,于是,B跟管家NAT B说,A是我认识的朋友,这样A的访问请求就不会再被管家NAT B所拒绝了.简而言之,UDP打洞就是一个通过server保存下来的地址使得彼此之间能够直接通信的过程,server 只管帮助建立连接,在建立间接之后就不再介入了.2.维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么解释:尽可能用约束(包括CHECK、主键、唯一键、外键、非空字段)实现,这种方式的效率最好;其次用触发器,这种方式可以保证无论何种业务系统访问数据库都能维持数据库的完整性、一致性;最后再考虑用自写业务逻辑实现,但这种方式效率最低、编程最复杂,当为下下之策。

3.A=10,b=20在不使用第三变量使两值互换解释: a=10,b=8a=a-bb=b+aa=b-a4. override与重载的区别解释:o verride是把继承于父类的方法给覆盖掉重载是同一个函数名接受不同类型、个数的参数,完成不同的功能,调用起来方便5.抽象类跟接口的区别解释:抽象类可以有非抽象方法,接口中只能有抽象方法。

接口可以实现多继承。

6.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code 会不会被执行,什么时候被执行,在return前还是后?解释:inally里的代码会执行,在return之前执行7.实现一个冒泡排序解释:ArrayList<Integer> list=new ArrayList<Integer>();list.add(76);list.add(4);list.add(786);list.add(43);list.add(21);list.add(432);list.add(10);for(int i=0;i<list.size()-1;i++) {for(int j=1;j<list.size()-i;j++) {Integer a;if((list.get(j-1)).compareTo(list.get(j))>0) { //比较两个整数的大小a=list.get(j-1);list.set((j-1),list.get(j));list.set(j,a);}}}for(Integer s:list) {System.out.println(s.intValue());}8.查出总成绩大于100分的学生信息1 Zhang Sql 602 li C# 503 wang Java 704 zhang Java 555 li Sql 606 li Java 65解释:select * from table where id in (select name,sum(gade) as total from table group by name having total>100 )Where在分组之前过滤数据,条件不能包含聚组函数,having在分组之后过滤数据,条件中经常包含聚组函数。

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

1.(口述题)请简述迅雷、 BT 等 p2p 下载软件的实现原理。

如何资源分布。

解释:A 想来 B 家做客 ,但是遭到了 B 的管家 NAT B 的拒绝 ,理由是 :我从来没有听我家 B 提过你的名字,这时 A 找到了 A,B 都认识的朋友 server,要求 server给 B 报一个信 ,让 B 去跟管家说 A 是我的朋友 ,于是 ,B 跟管家 NAT B 说 ,A 是我认识的朋友 ,这样A 的访问请求就不会再被管家 NATB 所拒绝了 .简而言之 ,UDP 打洞就是一个通过 server保存下来的地址使得彼此之间能够直接通信的过程,server只管帮助建立连接 ,在建立间接之后就不再介入了 .2.维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么解释:尽可能用约束(包括 CHECK 、主键、唯一键、外键、非空字段)实现,这种方式的效率最好;其次用触发器,这种方式可以保证无论何种业务系统访问数据库都能维持数据库的完整性、一致性;最后再考虑用自写业务逻辑实现,但这种方式效率最低、编程最复杂,当为下下之策。

3.A=10,b=20 在不使用第三变量使两值互换解释 : a=10,b=8a=a-bb=b+aa=b-a4.override 与重载的区别解释: o verride是把继承于父类的方法给覆盖掉重载是同一个函数名接受不同类型、个数的参数,完成不同的功能,调用起来方便5.抽象类跟接口的区别解释:抽象类可以有非抽象方法,接口中只能有抽象方法。

接口可以实现多继承。

6.try {}里有一个return语句,那么紧跟在这个try 后的finally{} 里的code会不会被执行,什么时候被执行,在return前还是后?解释: inally 里的代码会执行,在return 之前执行7.实现一个冒泡排序解释:ArrayList<Integer> list=new ArrayList<Integer>();list.add(76);list.add(4);list.add(786);list.add(43);list.add(21);list.add(432);list.add(10);for(int i=0;i<list.size()-1;i++) {for(int j=1;j<list.size()-i;j++) {Integer a;if((list.get(j-1)).compareTo(list.get(j))>0) { //比较两个整数的大小a=list.get(j-1);list.set((j-1),list.get(j));list.set(j,a);}}}for(Integer s:list) {System.out.println(s.intValue());}8.查出总成绩大于100 分的学生信息1Zhang Sql602li C#503wang Java704zhang Java555li Sql606li Java65解释: select * from table where id in (select name,sum(gade) as total from table group by name having total>100 )Where 在分组之前过滤数据,条件不能包含聚组函数,having 在分组之后过滤数据,条件中经常包含聚组函数。

带聚合函数的select中只能有聚合函数和分组列。

9.有一个学生表,有学生姓名,语文成绩,数学成绩。

请写出查询语文成绩和数学成绩在 60 分以上的学生信息,并能查出语文成绩和数学成绩之和大于130分的学生信息,请用一句SQL 拼写出来。

解释: select * from table where yuwen>60 and shuxue>60 and yuwen+shuxue>13010. &和 &&的区别?解释:计算 p1&&p2 时,Java 先计算 p1,若 p1 为 true 再计算 p2;若 p1 为 false, 则不再计算 P211.什么是事务?什么是锁?解释:事务是指一个工作单元,它包含了一组数据操作命令,并且所有的命令作为一个整体一起向系统提交或撤消请求操作,即这组命令要么都执行,要么都不执行。

锁是在多用户环境中对数据的访问的限制。

SqlServer 自动锁定特定记录、字段或文件,防止用户访问,以维护数据安全或防止并发数据操作问题,锁可以保证事务的完整性和并发性。

12.什么是索引,有什么优点?解释:索引象书的目录类似,索引使数据库程序无需扫描整个表,就可以在其中找到所需要的数据,索引包含了一个表中包含值的列表,其中包含了各个值的行所存储的位置,索引可以是单个或一组列,索引提供的表中数据的逻辑位置,合理划分索引能够大大提高数据库性能。

13.视图是什么?游标是什么?解释:视图是一种虚拟表,虚拟表具有和物理表相同的功能,可以对虚拟表进行增该查操作,视图通常是一个或多个表的行或列的子集,视图的结果更容易理解(修改视图对基表不影响),获取数据更容易(相比多表查询更方便),限制数据检索(比如需要隐藏某些行或列),维护更方便。

游标对查询出来的结果集作为一个单元来有效的处理,游标可以定位在结果集的特定行、从结果集的当前位置检索一行或多行、可以对结果集中当前位置进行修改、15.什么是存储过程?有什么优点?解释:存储过程是一组予编译的 SQL 语句,它的优点有 1.允许模块化程序设计,就是说只需要创建一次过程,以后在程序中就可以调用该过程任意次。

2.允许更快执行,如果某操作需要执行大量 SQL 语句或重复执行,存储过程比 SQL 语句执行的要快。

3.减少网络流量,例如一个需要数百行的 SQL 代码的操作有一条执行语句完成,不需要在网络中发送数百行代码。

4.更好的安全机制,对于没有权限执行存储过程的用户,也可授权他们执行存储过程。

16.什么是触发器?解释:触发器是一种特殊类型的存储过程,出发器主要通过事件触发而被执行的,触发器的优点: 1.强化约束,触发器能够提供比CHECK 约束。

2.跟踪变化,触发器可以跟踪数据库内的操作,从而不允许未经允许许可的更新和变化。

3. 联级运算,比如某个表上的触发器中包含对另一个表的数据操作,而该操作又导致该表上的触发器被触发。

17.销售主表(订单号,业务员,客户名称,合同日期)销售子表(订单号,产品编号,销售数量,销售金额)产品表(产品编号,产品名称)请根据以下条件,写出分别sql 语句1.统计合同日期为 2006 年 10 月的各业务员的销售数量和销售金额2.统计合同日期为 2006 年 10 月的各产品的销售数量和销售金额3.计算业务员‘张三’销售的产品为’维生素 b‘的平均价格18.什么叫做sql注入,如何防止?请那个举例说明。

解释:sql 注入,就是利用程序员对用户输入数据的合法性检测不严或不检测的特点,故意从客户端提交特殊代码,获取服务端信息。

例如:“select * from users where username= ‘” +v_name+“’ and pwd= ‘”+v_pwd+“’”;If(obj!=null){验证通过}用户名随便输入,密码输入:"aaa' or '1'='1"如何防止: PreparedStatement19.请写出 javascript弹出确认框的函数。

解释: confirm( ‘是否删除’ )20.你以为大数据量下的列表显示分页应该如何处理?请叙述一下你的方法解释:type refCursorType is REF CURSOR;-- 游标类型定义,用于返回数据集procedure sp_Page(p_PageSize int,-- 每页记录数p_PageNoint,-- 当前页码, 从1开始p_SqlSelect varchar2,--查询语句, 含排序部分p_OutRecordCount out int,--返回总记录数p_OutCursor out refCursorType)asv_sql varchar2(3000);v_count int;v_heiRownum int;v_lowRownum int;begin----取记录总数v_sql := 'select count(*) from (' || p_SqlSelect || ')';execute immediate v_sql into v_count;p_OutRecordCount := v_count;----执行分页查询v_heiRownum := p_PageNo * p_PageSize;v_lowRownum := v_heiRownum - p_PageSize + 1;v_sql := 'SELECT *FROM (SELECT A.*, rownum rnFROM ('|| p_SqlSelect ||') AWHERE rownum <= '||to_char(v_heiRownum) || ') BWHERE rn >= ' || to_char(v_lowRownum) ;--注意对 rownum别名的使用 , 第一次直接用rownum,第二次一定要用别名 rnOPEN p_OutCursor FOR v_sql;end sp_Page;/******************************************************************功能描述 : 大数据量分页通用存储过程 ( 重载 1,推荐使用 )*创建人:夏春涛*创建时间 : 2005-07-01*****************************************************************/procedure sp_Page(p_PageSize int,-- 每页记录数p_PageNoint,-- 当前页码, 从1开始p_SqlSelect varchar2,--查询语句, 含排序部分p_SqlCountvarchar2,--获取记录总数的查询语句p_OutRecordCount out int,--返回总记录数p_OutCursor out refCursorType)asv_sql varchar2(3000);v_count int;v_heiRownum int;v_lowRownum int;begin----取记录总数execute immediate p_SqlCount into v_count;p_OutRecordCount := v_count;----执行分页查询v_heiRownum := p_PageNo * p_PageSize;v_lowRownum := v_heiRownum - p_PageSize + 1;v_sql := 'SELECT *FROM (SELECT A.*, rownum rnFROM ('|| p_SqlSelect ||') AWHERE rownum <= '||to_char(v_heiRownum) || ') BWHERE rn >= ' || to_char(v_lowRownum) ;--注意对 rownum别名的使用 , 第一次直接用rownum,第二次一定要用别名 rnOPEN p_OutCursor FOR v_sql;end sp_Page;/******************************************************************功能描述 : 大数据量分页通用存储过程 ( 重载 2)*创建人:夏春涛*创建时间 : 2005-07-01*****************************************************************/procedure sp_Page(p_PageSize int,-- 每页记录数p_PageNoint,-- 当前页码,从1开始p_SqlSelect varchar2,-- 查询语句 , 含排序部分p_OutCursor out refCursorType) asv_sql varchar2(3000);--v_count int;v_heiRownum int;v_lowRownum int;begin/*----取记录总数v_sql := 'select count(*) from (' || p_SqlSelect || ')';execute immediate v_sql into v_count;p_OutRecordCount := v_count;*/----执行分页查询v_heiRownum := p_PageNo * p_PageSize;v_lowRownum := v_heiRownum - p_PageSize + 1;v_sql := 'SELECT *FROM (SELECT A.*, rownum rnFROM ('|| p_SqlSelect ||') AWHERE rownum <= '||to_char(v_heiRownum) || ') BWHERE rn >= ' || to_char(v_lowRownum) ;--注意对 rownum别名的使用 , 第一次直接用rownum,第二次一定要用别名 rnOPEN p_OutCursor FOR v_sql;end sp_Page21.short s1 = 1; s1 = s1 + 1;有什么错?short s1 = 1; s1 += 1;有什么错?解释:第一句,编译期出错,第二句正确,属于方法重载。

相关文档
最新文档