1. 程式人生 > >Oracle學習筆記 -分頁,儲存過程,自增

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