Oracle按变量名排序内联视图在PL SQL中不起作用

时间:2013-11-28 15:12:59

标签: sql oracle sorting plsql

非常感谢您提前查看我的问题。

要点: 我想按变量名称& pSortColumn对内联视图进行排序。 在Query(见下文)中,它运行良好。但是,在PL SQL中,没有进行排序!!!

下面查询SORTED正确

SELECT  RUV2.*
FROM

    (SELECT ROWNUM AS ROW_ID, RUV1.*
     FROM

        (SELECT         
                    ru.ENTERPRISE_ID,
                    ru.LEGAL_NAME
        FROM    
        TB_REPORTING_UNIT ru
        WHERE       ru.REFYEAR = 2012   

        ORDER BY    &pSortColumn     
        ) RUV1
    ) RUV2 ;

PL SQL下面没有排序

OPEN    cur_ReportingUnit FOR

   SELECT  RUV2.*
   FROM
        (SELECT ROWNUM AS ROW_ID, RUV1.*
         FROM
             (SELECT         
                     ru.ENTERPRISE_ID,
                     ru.LEGAL_NAME 
              FROM    
                     TB_REPORTING_UNIT ru
              WHERE  ru.REFYEAR = 2012  
              ORDER BY pSortColumn    
            ) RUV1

        ) RUV2 ;

      LOOP
          FETCH cur_ReportingUnit INTO mRow_Id, mEnterprise_ID, mLegal_Name ;     
            EXIT WHEN (cur_ReportingUnit%notfound) ;

          DBMS_OUTPUT.PUT_LINE (mEnterprise_ID || ' --- ' || mLegal_Name ) ;
      END LOOP;

2 个答案:

答案 0 :(得分:1)

将排序子句添加到最外层的查询

答案 1 :(得分:0)

对于带有“窗口”的分页,您可以执行以下操作:

select e.*
from   ( select e.*
         ,      row_number() 
                over 
                (order by uur_id) ive$idx$ 
         from   bubs_uren_v e 
         where ( uur_id = :w1 )
       ) e 
where  ive$idx$ between (:start_index + 1) and (:start_index + :max_row_count)

我们在项目管理套件中使用此代码,该套件处理大量数据。不要问我Oracle是如何做到的,但它一直很快。请记住只包含您需要的列,保存处理,内存甚至PL / SQL函数调用。