📄 复习8.txt
字号:
21:32 2008-08-19如何通过oracle实向分页处理,在java中怎样调用
--oracle的实现
create or replace package myPack
is
c_type is ref cursor;
procedure getPage(p_sql varchar2,pageSize number,currentPage number,c1 out c_type) ;
end;
create or replace package body myPack
is
procedure getPage(p_sql varchar2,pageSize number,currentPage number,c1 out c_type)
is
v_sql varchar2(2000);
begin
v_sql:='select * from ('||p_sql||') where rownum<='||currentPage*pageSize;
v_sql:=v_sql||' minus ';
v_sql:=v_sql||'select * from ('||p_sql||') where rownum<='||((currentPage1-)*pageSize);
open c1 for v_sql;
end;
end;
--java调用oracle
CallStatement cs=con.preCall("call {myPack.getPage(?,?,?,?)}");
cs.setString(1,"select * from customer");
cs.setInt(2,2);
cs.setInt(3,2);
cs.registerOutParameter(4,OracleTypes.cursorType);
cs.execute();
ResultSet rs=cs.getObejct(4);
while(rs.next())
{
}
如何通过sqlserver分页:
通过top分页
--通用代码
SELECT TOP 页大小 *
FROM TestTable
WHERE ID NOT IN
(SELECT TOP 页大小*(页数-1) id
FROM 表
ORDER BY id)
ORDER BY ID
create table aa
(
a1 varchar(20) primary key,
a2 varchar(20)
);
insert into aa values('a01','11111111111111111');
insert into aa values('a02','11111111111111111');
insert into aa values('a03','11111111111111111');
insert into aa values('a04','11111111111111111');
insert into aa values('a05','11111111111111111');
insert into aa values('a06','11111111111111111');
insert into aa values('a07','11111111111111111');
insert into aa values('a08','11111111111111111');
insert into aa values('a09','11111111111111111');
insert into aa values('a10','11111111111111111');
insert into aa values('a11','11111111111111111');
insert into aa values('a12','11111111111111111');
insert into aa values('a13','11111111111111111');
insert into aa values('a14','11111111111111111');
insert into aa values('a15','11111111111111111');
insert into aa values('a16','11111111111111111');
insert into aa values('a17','11111111111111111');
insert into aa values('a18','11111111111111111');
SELECT TOP 2 *
FROM aa
WHERE a1 NOT IN
(SELECT TOP 0 a1
FROM aa
ORDER BY a1)
ORDER BY a1
--第二页
select top 2 * from aa
where a1 not in(select top 2 a1 from aa order by a1)
order by a1;
--第三页
select top 2 * from aa
where a1 not in
(
select top 4 a1 from aa order by a1
)
order by a1;
--还有一种方式是通过sqlserver提供的游标分页
如何通过java的session实现分页,java的session分页与数据库分页优缺点。
java分页:
通过持久层取出一个表的所有信息放到一个集合中,
确定一页显示多少行
根据集合的数量及一页显示多少行的信息确定总共有多少页
根所客户的请求确定客户需要的当前页
定位到当前页的第一行(page-1)*pageSize
每页显示2行,即pageSize=2
显示第一页
currentPageFirstRow:第一页的第一行:(1-1)*pageSize
page=2
第二页的第一行:(2-1)*pageSize
取一页信息显示
for(int i=currentPageFirstRow;i<currentPageFirstRow+pageSize;i++)
{
if(i>=list.size())
{
break;
}
list.get(i);
}
oracle的体系结构
数据库(静态)
物理组件:
参数
控制
数据
日志
逻辑:
表空间
段
区
块
实例(动态)
进程
dbwr
lgwr
smon
pmon
ckpt
归档进程
内存
SGA
数据缓冲
日志
共享池
数据字典
pga:
一个用户一个
如何实现一个存储过程?如何实现一个函数?
create or replace procedure aa(a1 varchar2,a2 out varchar2,a3 in out varchar2)
is
begin
end;
create or replace function aa(a1 varchar2) return number
is
begin
return 1;
end;
oracle的触发器与sql-server的触发器的区别?
oracle:
before/after insert/delete/update
for each statement/row
新数据: :new
老数据: :old
sql-server:
之前之后不可选是由sql-server自己确定的
for each statement(只有语句级)
新数据inserted
老数据deleted
请描述联接、子查询、联合
联接:多个表列合了一起,会把one复制n-1份
左:左边所有的右边区配的
右:右边所有的左边区配的
select c.*,b.* from customer join buy b on c.customerName=b.customerName;
select c.*,b.* from customer , buy b where c.customerName=b.customerName;
子查询:查询套查询,子查询的结果是父查询的条件
select * from buy where customerName in(select customerName from customer);
联合:多个表的行合了一起
union
minus:前一个sql有后一个没有
intersect:交集
表分区的特点及优点?
特点:
逻辑是一张表,物理上没有存储一起。
优点:
速度快
备份快
一个分区出现故障与其它分区无关
如何声明、打开、遍历游标?
declare
cursor c1 is select * from customer;
cus customer%rowtype;
begin
open c1;
fetch c1 into cus;
while(c1%found) loop
dbms_output.put_line(cus.customerName||' '||cus.sex);
fetch c1 into cus;
end loop;
close c1;
end;
declare
type c_type is ref cursor;
c1 c_type;
begin
open c1 for select * from customer;
end;
如何实现一个包?
包声明
包主体
如何备份数据、恢复数据
在命令行中运行
导出:
exp t79/1234@db file=c:\a
imp t79/1234@db file=c:\a
exp system/system@aptech owner=scott file=scott1
imp system/system@aptech file=scott1 full=y ignore=y
imp system/system@aptech file=scott1 ignore=y fromuser= touser=
根据一个列值去取表中重复的行
工作流
java实现国际化
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -