create or replace package testPackage as typ...">

精品一区二区中文在线,无遮挡h肉动漫在线观看,国产99视频精品免视看9,成全免费高清大全

pl/sql過程分頁顯示小案例 -電腦資料

電腦資料 時間:2019-01-01 我要投稿
【salifelink.com - 電腦資料】

    pl/sql過程分頁顯示小案例

    編寫一個過程,要求可以輸入表名,輸入每頁顯示的記錄數,輸入當前頁,返回總記錄數,總頁數,和返回的結果集

    --------------------------------------------------------------------- 

    SQL>create or replace package testPackage as type test_cursor(游標名) is ref cursor(游標)

    end testPackage

    SQL>create procedure p8(table_name in varchar2,--表名

    pageSize in number,           --當前顯示的記錄數

    pageNow in number,--當前頁

    --下面都是要返回的內容,其值在過程處理中賦予

    myrows out number,            --總記錄數

    myPageCount out number,         --總頁數

    p_cursor out testPackage.test_cursor   --返回的結果集

    ) is

    --定義sql語句

    v_sql varchar2(1000);

    v_begin number := (pageNow - 1)*pageSize + 1; -- 每頁顯示的最少數

    v_end number := pageNow * pageSize;     --每頁顯示的最大數 

    bgein

    v_sql := 'select * rownum from (SQL>select a1.*,rownum rn from (select name,sal from '||table_name||')

    a1 where rownum<='||v_end||') where rownum>'||v_begin||'';

    open p_cursor for v_sql;                --打開一個游標,將游標和sql語句關聯起來

    v_sql : = 'select count(*) from '||table_name'';   --計算myrows和myPageCount

    execute immediate v_sql into myrows ;         --執行sql,并把返回值賦給myrows來記錄總記錄數

    if mod(myrows,pageSize)= 0 then           --計算總頁數,注意思路,很好理解

    myPageCount := myrows/Pagesiez;

    else

    myPageCount := myrows/Pagesiez + 1;

    end if

    close p_cursor;                    --關閉游標 

    end;

    /

    ------------------------------------------------------------------------------------------------------

    Class.forName("oracle.jdbc.driver.OracleDriver");

    Connection ct = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:

    CallableStatement cs = ct.prepareCall("{call p8(?,?,?,?,?,?)}");

    //給?賦值

    cs.setString(1,"myTable");

    sc.setInt(2,5);

    sc.setInt(3,1);

    //給out參數?賦值

    cs.registOutPrameter(4,oracle.jdbc.OracleTypes.INTEGER);//這側記錄總數

    cs.registOutPrameter(5,oracle.jdbc.OracleTypes.INTEGER);//注冊總頁數

    cs.registOutPrameter(6,oracle.jdbc.OracleTypes.CURSOR);//注冊返回的結果集

   

    //執行

    cs.execute();

    //得到結果集

    ResultSet rs = (ResultSet) cs.getObject(6);

    //取出總記錄數

    int rowNum = cs.getInt(4);

    //返回總頁數

    int pagecount = cs.getInt(5);

    while(rs.next()){

    System.out.println(rs.getInt(1) + "--" + rs.getString(2));

    }

    //關閉相關資源,此處略寫

    作者 chunqiuwei

最新文章