首先:還是先把儲存過程寫好!(關於對一張表的分頁查詢)
create or replace procedure proc_pagination(
start_num in int --輸入引數:分頁的開始記錄數
,end_num in int --輸入引數:分頁的結束記錄數
,total_count out int --輸出引數:總記錄數
,page_result_set out sys_refcursor --oracle的游標查詢結果集
) as
count_sql varchar2(200); --定義變數:查詢總記錄數的sql
v_sql varchar2(400); --定義變數:分頁查詢結果集的sql
begin
count_sql := 'select count(*) from mymis.tb_mymis_resources_menu';
execute immediate count_sql into total_count; --把查詢的記錄數結果,給輸出引數
--v_sql := 'select * from (select temp.*,rownum as rn from (select * from mymis.tb_mymis_resources_menu order by resource_id asc) temp where rownum <= ' || end_num || ') where rn > ' || start_num;
v_sql := 'select * from (select rownum as rn,a.* from mymis.tb_mymis_resources_menu a where rownum <= ' || end_num || ' order by a.resource_id asc) where rn > ' || start_num;
open page_result_set for v_sql; --把游標查詢的結果集給輸出引數end proc_pagination;
end proc_pagination;
儲存過程寫好了,下面是普通jdbc類的呼叫:(這裡就寫了乙個main方法,做測試用)
public static void main(string args) else
connection conn = connectionfactory.getconnection(); //獲取資料庫連線
callablestatement cs; //定義jdbc呼叫儲存過程的類
try
} catch (sqlexception e)
}
下面做了乙個jdbctemplate的呼叫,個人覺得資料庫持久層,spring的jdbctemplate是個好東西,查詢效率也蠻快的,而且查詢方法也很多。同樣寫在main方法裡
public static void main(string args) ;
jdbctemplate.execute("call mymis.proc_pagination(?,?,?,?)");
這樣去呼叫儲存過程,jdbctemplate.execute(callablestatementcreator arg0, callablestatementcallback arg1) 兩個引數,乙個是建立呼叫儲存過程物件,另乙個是返回引數
list resultlist = (list)jdbctemplate.execute(
new callablestatementcreator()";//呼叫儲存過程
callablestatement cs = con.preparecall(storedproc);
cs.setint(1, 4); //匹配輸入輸出引數
cs.setint(2, 8);
cs.registeroutparameter(3, types.integer);
cs.registeroutparameter(4, oracle.jdbc.oracletypes.cursor);
return cs; //返回execute()方法的第乙個引數,建立callablestatement的物件
}},new callablestatementcallback()
rs.close();
return resultsmap; //將整個呼叫儲存過程得到的引數返回。}}
);}
大致就是這樣的,**都經過本機測試過的!!感覺很多資料庫的儲存過程寫法有些差異,不過都大同小異。 Oracle儲存過程呼叫儲存過程
oracle儲存過程呼叫有返回結果集的儲存過程一般用光標的方式,宣告乙個游標,把結果集放到游標裡面,然後迴圈游標 declare newcs sys refcursor cs1 number cs2 number cstype table rowtype table列的個數和newcs返回的個數一樣...
Oracle儲存過程呼叫帶參的儲存過程
oracle儲存過程包含三部分 過程 宣告,執行過程部分,儲存過程異常。oracle儲存過程可以有無引數儲存過程和帶引數儲存過程。一 無參程式過程語法 1create orreplace procedure noparpro2as 3begin 4 5 exception 儲存過程異常6 7end ...
C 呼叫Oracle的儲存過程
平時操作oracle資料庫一般都是呼叫工具類或者框架,慢慢的都快忘了是如何實現的了 汗顏啊 看來平時在學習技術和程式設計的同時,還真的要好好的熟悉一下基礎知識啊 只記得大概的流程,今天特此整理,算是紀念吧 笑哭 oracleconnection connection new oracleconnec...