繁体   English   中英

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

[英]Oracle Sort inline view by variable name not working in PL SQL

非常感谢您关注我的问题。

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

查询以下正确排序

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;

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

对于使用“窗口”进行分页,可以执行以下操作:

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函数调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM