一个oracle 的 sql 分页SELECT * FROM 
(
SELECT A.*, ROWNUM RN 
FROM (SELECT * FROM TABLE_NAME) A 
)
WHERE RN BETWEEN 21 AND 40有朋友可以转成oracle存储过程的么------------------------我们现在程序是.net的,数据库是sqlserver 所以想转            dbCommand = db.GetStoredProcCommand(CmsConfiguration.Common.StoredProc.ReturnPage);
            db.AddInParameter(dbCommand, "Select", DbType.String, "SELECT * FROM " + CmsConfiguration.Membership.Table.User + where);
            db.AddInParameter(dbCommand, "OrderBy", DbType.String, orderBy);
            db.AddInParameter(dbCommand, "StartRow", DbType.Int32, startRow);
            db.AddInParameter(dbCommand, "EndRow", DbType.Int32, endRow);

解决方案 »

  1.   

    不懂oracle。
    如果不熟悉oracle的话,可以使用ado.Entity来实现都会数据库的操作,这样可以在编码上避免对oracle 的Sql语法的依赖
      

  2.   

    按楼主的分页方式,在oracle中也不一定要跟sqlserver一样用存储过程,只要是8i以上版本,使用分析函数和sql语句参数可以很容易实现分页,我现在没有环境,不好测试,楼主可以转到orcle区,应该很快就有答案了
      

  3.   


    create or replace procedure (startPage in number, endPage in number, returnRet out sys_refcursor)
    begin
    open returnRet for(SELECT * FROM(SELECT A.*, ROWNUM RN FROM(SELECT * FROM TABLE_NAME) A) WHERE RN BETWEEN startPage AND returnRet);
    end;