Oracle的思維(4)Oracle的萬能分頁並不萬能2

來源:互聯網
上載者:User
很久沒有寫東西了,因為很久沒有碰到問題了。在一次又一次的覺得Oracle的萬能分頁很爽以外,今天終於碰到了一個問題。

oracle可以sql語句為參數,拼成萬能分頁sql
"select * from ( select row_.*, rownum rownum_ from ( "+sql" ) row_ where
rownum <= ?) where rownum_ > ?"
Oracle採用嵌套3層的查詢語句結合rownum來實現分頁,這在Oracle上是最快的方式,
如果只是一層或者兩層的查詢語句的rownum不能支援order by。

例如:
sql=select * from admin
拼成select * from ( select row_.*, rownum rownum_ from ( select * from admin) row_ where
rownum <= 110) where rownum_ > 100
沒問題

但今天碰上一條自遞迴的父子結點表就有問題了。
dept表結構如下
deptid     parentid    name
1            0          直屬大隊
2            1          直屬大隊一中隊

入口sql=
select
      p.tb_parkingbus_id id,
       p.tb_eventinfo_id,
       p.ajbh,
       t.bustypename,
       r.resultname,
       .....
       dept.dept_name,
       deptoffice.dept_name
  from tb_parkingbus p,  '車輛表
       tb_cfgbustype t,      '車輛類型表
       tb_cfgbusresult r,    '車輛處理結果表
       dept,    '一級部門表
       dept deptoffice  '二級部門表 
 where t.bustypecode = p.bustypecode and r.result = p.result and p.sts='A' and dept.dept_id = p.dept_id
       and dept.parentid= deptoffice.dept_id //二級部門父結點ID=一級部門ID
       and
       p.dept_id ='30000'     
order by p.ajbh desc

這條sql本身沒有問題。可以正常執行但是代入萬能分頁sql後就會出現未明確定義的列了

似乎目前還沒有辦法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.