Oracle學習筆記 -分頁,儲存過程,自增
阿新 • • 發佈:2018-11-19
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;
}