ORACLE中使用遞歸查詢(轉)

ORACLE中使用遞歸查詢

在數據庫查詢中常常會碰到要查詢樹形結構的數據,需要用一個字段的數據當做下一條記錄的父節點繼續查詢,如果在不知道有多少級節點的情況下一次次手寫SQL查詢會很繁瑣而沒有效率,這時可以使用

oracle中的connect with prior遞歸算法:
Oracle中start with…connect by prior子句用法 connect by 是結構化查詢中用到的,其基本語法是:
select … from tablename start with 條件1
connect by 條件2
where 條件3;
例:
select * from table
start with org_id = ‘HBHqfWGWPy’
connect by prior org_id = parent_id;

在實際使用時遇到兩個問題,**一是如果把where子句放在start with…connect by…子句後時會提示:ORA-00933:SQl命令未完全結束。**此時光標置於where處,如果將where放在 start with…connect by…子句前則可以正常執行。二是查詢的數據中不能有自循環,即例子中的 org_id 和 parent_id 在同一條記錄中不能相等,否則會提示:ORA-01436:用戶數據中的connect by 循環。這兩點需要注意。

以下是參考到的網絡文檔:
http://www.cnblogs.com/chen1388/archive/2010/09/25/1834827.html
http://zhidao.baidu.com/question/281792402.html
http://zhidao.baidu.com/question/281792402.html

https://blog.csdn.net/ziwi821/article/details/84375966

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章