Oracle学习笔记 -分页,存储过程,自增

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;
}

猜你喜欢

转载自blog.csdn.net/ni_new_sm_new/article/details/80985610