请问在oracle中如何实现效果就像在SQL Server中"select top " + pageSize + " * from tb_user where id not in (select top " + curPage*pageSize + " id from tb_user) and units_id=1"这个就能取出符合条件的前pageSize条信息(pageSize每页显示条数,curPage当前页数) 
麻烦谁能帮我写个例子吗?谢谢了 

解决方案 »

  1.   

    http://bbs.inthirties.com/thread-155-1-1.html
      

  2.   


    CREATE OR REPLACE PROCEDURE TABLEPAGE_SELECT(v_page_size  int, --the size of a page of list
                           v_current_page int, --the current page of list
                           v_table_name varchar2, --the talbe name
                           v_order_field varchar2,--the order field
                           v_order_sequence varchar2,--the order sequence should by "_desc"or "_asc",_is blank.
                           --v_sql_select  varchar2, --the select sql for procedure
                           --v_sql_count  varchar2, --the count sql for procedure
                           --v_out_recordcount OUT int, --the num of return rows
                           p_cursor OUT refcursor_pkg.return_cursor) as
     v_sql     varchar2(3000); --the sql for select all rows of list
     v_sql_count  varchar2(3000); --the count sql for procedure
     v_sql_order  varchar2(2000); --the order of list
     v_count    int; -- the amount rows fo original list
     v_endrownum  int; --the end row num of the current page
     v_startrownum int; --the start row num of the current page
    BEGIN
     ----set the order of list
     if v_order_field!='NO' then
      v_sql_order :=' ORDER BY '|| v_order_field ||' '||v_order_sequence;
     else
       v_sql_order :='';
     end if;
     ----catch the amount rows of list
     v_sql_count:='SELECT COUNT(ROWNUM) FROM '||v_table_name;
     execute immediate v_sql_count into v_count;
     -- v_out_recordcount := v_count;
     ----set the value of start and end row
     if v_order_sequence='desc' then
      v_endrownum:=v_count-(v_current_page-1)*v_page_size;
      v_startrownum:=v_endrownum - v_page_size + 1;
     else
      v_endrownum:= v_current_page * v_page_size;
      v_startrownum := v_endrownum - v_page_size + 1;
     end if;
     ----the sql for page slide
     v_sql := 'SELECT * FROM (SELECT '||v_table_name||'.*, rownum rn FROM '||v_table_name||' WHERE rownum <= ' ||
          to_char(v_endrownum) ||' '|| v_sql_order||') WHERE rn >= ' ||
          to_char(v_startrownum)||' '||v_sql_order;
     open p_cursor for v_sql;
    END TABLEPAGE_SELECT;
      

  3.   

    我是要在VS2005里操作oracle,然后在网页上动态显示,这样的话查询应该怎么写呢?
      

  4.   

    select * from tb where rownum<=@rowCount order by ziduan desc