Oracled 的字段自增,查询,游标的返回,存储过程。
1,自增(触发器)
//还有一个条件需要增加一个队列
create or replace TRIGGER MYSYSTEM.CBOUNCEID
BEFORE INSERT ON MYSYSTEM.BOUNCERECORD
FOR EACH ROW
BEGIN
select bounceid(需要自增的字段名字).nextval into :new.bounceid(需要自增的字段名字) from dual;
END;
2,存储过程(Oracle)
--获取总页数
create or replace PROCEDURE SYSTEMUSERALLPAGEPRO(过程名称)
(
PAGES out NUMBER,--返回总页数
mypagerows in number --每页有多少行
) AS
myrows int:=0; --oracle 值的初始化
BEGIN
select count(*) into myrows from mysystem.systemuser; --计数查询/每页的数量
if mod(myrows,mypagerows)=0 then
pages:=myrows/mypagerows;
else
pages:=myrows/mypagerows+1;
end if;
END SYSTEMUSERALLPAGEPRO;
--分页查询
create or replace PROCEDURE SYSTEMUSERPAGEPRO
(
pagesize IN NUMBER, --页数
myrows in number, --行数
cur out sys_refcursor --返回一个游标
)AS
BEGIN
open cur for -- 开启游标
select * from
(
select A.*,ROWNUM RN
from (select * from mysystem.systemuser) A
where rownum <= pagesize*myrows
)
where rn > (pagesize-1)*myrows;
END SYSTEMUSERPAGEPRO;
//在Server类中调用分页函数
public List<> ...(int pagesize,int rows){
if(conn != null){
try {
//调用存储过程
String sql = "{call SYSTEMFLIGHTPAGEPRO(?,?,?)}";
CallableStatement cs= conn.prepareCall(sql);
cs.setInt(1, pagesize);
cs.setInt(2, rows);
//返回一个游标
cs.registerOutParameter(3, OracleTypes.CURSOR);
cs.execute();
//转化成Object
ResultSet rs = (ResultSet) cs.getObject(3);
while(rs.next()){
//这里写rs读出来的字段数据
}
} catch (SQLException e) {
e.printStackTrace();
}
}
else{
System.out.println("尚未连接数据库");
}
return null;
}
//在Server类中获取总分页数,同理
//调用存储过程
String sql = "{call SYSTEMFLIGHTALLPAGEPRO(?,?)}";
CallableStatement st = conn.prepareCall(sql);
st.registerOutParameter(1,Types.INTEGER);
st.setInt(2, rows); st.execute();
pages = st.getInt(1);
return pages;
3、其他数据库操作
//以删除为例
public Boolean deleteFlight(int flightid){
String sql = "delete * from flight where flightid = ?";
try{
PreparedStatement pt = conn.prepareStatement(sql);
//填充参数
pt.setInt(1,flightid);
pt.execute();//执行命令
return true;
}catch (Exception e) {
System.out.println("删除失败");
System.out.println(e.getMessage());
}
return false;
}