分頁是任何一個網站(bbs,網上商城,blog)都會使用到的技術,因此學習pl/sql編程開發就一定要掌握該技術。如下圖:
1. 編寫無返回值的存儲過程
首先是掌握最簡單的存儲過程,無返回值的存儲過程。
案例:現有一張表book,表結構如下:
請寫一個過程,可以向book表添加書,要求通過java程序調用該過程。
--in:表示這是一個輸入參數,默認爲in
--out:表示一個輸出參數
存儲過程代碼如下:
在java中調用中調用該過程代碼如下:
執行,記錄被加進去了。
2. 有返回值的存儲過程(非列表)
案例:編寫一個過程,可以輸入僱員的編號,返回該僱員的姓名。
案例擴張:編寫一個過程,可以輸入僱員的編號,返回該僱員的姓名、工資和崗位。
存儲過程代碼如下:
java調用過程代碼如下:
運行,成功得出結果。
案例擴張:編寫一個過程,可以輸入僱員的編號,返回該僱員的姓名、工資和崗位。
java調用過程代碼如下:
運行,成功找出記錄。
3. 有返回值的存儲過程(列表[結果集])
案例:編寫一個過程,輸入部門號,返回該部門所有僱員信息。
對該題分析如下:
由於oracle存儲過程沒有返回值,它的所有返回值都是通過out參數來替代的,列表同樣也不例外,但由於是集合,所以不能用一般的參數,必須要用pagkage了。所以要分兩部分:
(1). 建立一個包,在該包中,我定義類型test_cursor,是個遊標。代碼如下:
(2). 建立存儲過程,代碼如下:
(3). 在java中調用該過程,代碼如下:
運行,成功得出部門號是10的所有用戶。
4. 編寫分頁過程
要求,請大家編寫一個存儲過程,要求可以輸入表名、每頁顯示記錄數、當前頁。返回總記錄數,總頁數,和返回的結果集。
(1). oracle中的分頁實現:
(2). 開發一個包
建立一個包,在該包中,我定義類型test_cursor,是個遊標。代碼如下:
(3). 使用java測試該分頁過程,代碼如下:
運行,控制檯輸出:
rowNum=19
總頁數:4
編號:7369 名字:SMITH 工資:2850.0
編號:7499 名字:ALLEN 工資:2450.0
編號:7521 名字:WARD 工資:1562.0
編號:7566 名字:JONES 工資:7200.0
編號:7654 名字:MARTIN 工資:1500.0
新的需要,要求按照薪水從低到高排序,然後取出6-10。
代碼如下:
重新執行一次procedure,java不用改變,運行,控制檯輸出:
rowNum=19
總頁數:4
編號:7900 名字:JAMES 工資:950.0
編號:7876 名字:ADAMS 工資:1100.0
編號:7521 名字:WARD 工資:1250.0
編號:7654 名字:MARTIN 工資:1250.0
編號:7934 名字:MILLER 工資:1300.0