PostgreSQL 中的遞歸查詢 與oracle 的比較

PostgreSQL 中的遞歸查詢,2種方法:

1、用with decursive

WITH RECURSIVE d AS (SELECT d1.id,d1.parent_id,d1.caption FROM course_types d1 where d1.dr = 0 and d1.id='typeId' union ALL SELECT d2.id,d2.parent_id,d2.caption FROM course_types d2, d WHERE d2.dr = 0 and d2.parent_id = d.id) SELECT * FROM d

其中typeId 是初始id

2、用遞歸函數

CREATE OR REPLACE FUNCTION query_child_dept_auth(character varying, lv1 integer)
? RETURNS SETOF w_help_dept AS
$BODY$ ?
DECLARE ?
itemid ALIAS FOR $1; ?
itemrecord record; ?
BEGIN ?
??? SELECT s.*,lv1 as lv INTO itemrecord FROM depts s? where s.dr = 0 and s.state = 1 and id=itemid order by s.sort,convert_to(s.caption,'gbk'); ?
??? RETURN NEXT itemrecord; ?
???? IF (select count(1) from depts s where s.dr = 0 and s.state = 1 and s.parent_id=itemrecord.id) >0? THEN ?
??????????? for itemrecord in SELECT s.* FROM depts s? where s.dr = 0 and s.state = 1 and s.parent_id=itemrecord.id order by s.sort,convert_to(s.caption,'gbk') LOOP ?
??????????????? for itemrecord in select * from query_child_dept_auth (itemrecord.id,(lv1+1)) LOOP ?
??????????????????? RETURN NEXT itemrecord; ?
??????????????? end LOOP; ?
??????????? end LOOP; ?
???? END IF; ?
??? RETURN;
END;$BODY$
? LANGUAGE plpgsql VOLATILE

其中w_help_dept是輔助表,表字段和depts一樣,且多個lv字段,lv字段用于模擬oracle遞歸查詢中的level樹層數

?

oracle 遞歸查詢

網上資料蠻多,隨便找了個http://cpdw.iteye.com/blog/625574

?

作用:對于查詢遞歸樹是個好方法

轉載于:https://www.cnblogs.com/xiongjinpeng/archive/2012/05/29/2523780.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/379665.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/379665.shtml
英文地址,請注明出處:http://en.pswp.cn/news/379665.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

教你如何玩轉GitHub

使用GitHub ①目的:借助GitHub托管項目代碼 基本概念: ①倉庫(Repository): 用來存放項目代碼,每個項目對應一個倉庫,多個開源項目對應多個倉庫 ②收藏(Star): 收藏項目,方便下次查看 ③…

Java SecurityManager checkDelete()方法與示例

SecurityManager類的checkDelete()方法 (SecurityManager Class checkDelete() method) checkDelete() method is available in java.lang package. checkDelete()方法在java.lang包中可用。 checkDelete() method calls checkPermission with FilePermission(filename,"d…

jQuery中的treeview插件

jQuery做樹狀結構真的很簡單,下面做一個最簡單的示例: 在html文件中引用: <link rel"stylesheet" href"../jquery.treeview.css" /> <link rel"stylesheet" href"../red-treeview.css" /> <link rel"styles…

Linux內核設計與實現---中斷和中斷處理程序

中斷和中斷處理程序1 中斷異常2 中斷處理程序上半部與下半部的對比3 注冊中斷處理程序釋放中斷處理程序4 編寫中斷處理程序重入和中斷處理程序共享的中斷處理程序中斷處理程序實例5 中斷上下文6 中斷處理機制的實現7 中斷控制禁止和激活中斷禁止指定中斷線中斷系統的狀態8 總結…

asp.net中的窗體身份驗證(最簡單篇)

在創建網站中&#xff0c;常常會使用到身份驗證。asp.net中內置了幾種身份驗證的方式&#xff0c;如Windows、Froms、Passport等。這幾種身份驗證的方式各有不同。一般來說&#xff0c;網站的身份驗證方式都會經過以下幾個步驟&#xff1a; 1、輸入用戶名和密碼&#xff0c;單擊…

bat文件調用dos命令 (dos淘金)

ECHO命令是大家都熟悉的DOS批處理命令的一條子命令&#xff0c;但它的一些功能和用法也許你并不是全都知道&#xff0c;不信你瞧&#xff1a; 1&#xff0e; 作為控制批處理命令在執行時是否顯示命令行自身的開關 格式&#xff1a;ECHO [ON|OFF] 如果想關閉“ECHO OFF”命令…

response細節點

一、 1&#xff09;、response獲得的流不需要手動關閉&#xff0c;Tomcat容器會幫你自動關閉 2&#xff09;、getWriter和getOutputStream不能同時調用 //error package com.itheima.content;import java.io.IOException; import javax.servlet.ServletException; import java…

Java RandomAccessFile writeBytes()方法與示例

RandomAccessFile類writeBytes()方法 (RandomAccessFile Class writeBytes() method) writeBytes() method is available in java.io package. writeBytes()方法在java.io包中可用。 writeBytes() method is used to write the sequence of bytes (i.e. string) to the file. E…

linux內核設計與實現---下半部和推后執行的工作

下半部和推后執行的工作1 下半部為什么要用下半部下半部的環境內核定時器2 軟中斷軟中斷的實現軟中斷處理程序執行軟中斷使用軟中斷3 tasklettasklet的實現使用taskletksoftirqd4 工作隊列工作隊列的實現工作、工作隊列和工作者線程之間的關系使用工作隊列5 下半部機制的選擇6 …

Jquery對復選框的操作

<from> 你的愛好是?<br/> <input type"checkbox" name"items" value"籃球" />籃球 <input type"checkbox" name"items" value"乒乓球" />乒乓球 <input type"checkbox" na…

HttpServletRequest(request的一些API)

一、request的運行流程 首先&#xff0c;自己寫一個web工程&#xff0c;也就是建一個工程&#xff1b;當把該web工程發布到Tomcat服務器當中&#xff0c;可以讓外界訪問&#xff0c;這就成了一個web應用。 在客戶端輸入一個網站&#xff0c;是web應用資源的地址URL&#xff0c…

DCI:James O. Coplien和Trygve Reenskau提出的新架構方法

http://www.infoq.com/cn/news/2009/05/dci-coplien-reenskau 轉載于:https://www.cnblogs.com/yelinpalace/archive/2009/06/13/1502573.html

Java ObjectStreamField getOffset()方法與示例

ObjectStreamField類的getOffset()方法 (ObjectStreamField Class getOffset() method) getOffset() method is available in java.io package. getOffset()方法在java.io包中可用。 getOffset() method is used to get the offset of this ObjectStreamField field. getOffse…

Mac VSCode配置C語言環境(可以調試)

Mac VSCode配置C語言環境c_cpp_properties.jsontasks.jsonlaunch.json新建一個文件夾&#xff0c;用vscode&#xff0c;然后再新建一個test.c文件。 #include <stdio.h>int main(void) {int a1,b1;int cab;printf("%d\n",c);return 0; }這篇文章說怎么配置c_c…

XmlPullParserException

今天在android的開發中約到一個問題 使用Ksoap2 訪問 WebService 拋出 XmlPullParserException 異常。 在網上淘了一下這個問題 http://www.eoeandroid.com/thread-70527-1-1.html 不能解決我的問題&#xff0c;求解轉載于:https://www.cnblogs.com/pengqinping/archive/2012/0…

vShpere Client在win 7 RC下和2008下 無法正常連接esx主機之解決辦法

vShpere Client在win 7 RC下和2008下 無法正常連接esx主機之解決辦法 在win7下和2008下打開client后連接esx主機會出現2個錯誤提示, 第一個是 第二個是 然后就連接失敗了,開始以為是CC的esx主機安裝有問題,后來找了找,借助了強大google工具,終于找到解決辦法.解決辦法如下: 1.從…

tooctalstring_Java Integer類toOctalString()方法的示例

tooctalstring整數類toOctalString()方法 (Integer class toOctalString() method) toOctalString() method is available in java.lang package. toOctalString()方法在java.lang包中可用。 toOctalString() method is used to represent an octal string of the given parame…

localhost與127.0.0.1之間的關系更改

其實localhost的默認IP地址為127.0.0.1&#xff0c;因為這是一種映射關系。 更改步驟如下&#xff1a; C:\Windows\System32\drivers\etc 下的hosts 打開hosts可以看到 更改即可

基于Hash表的排序--C語言

我們知道&#xff0c;C語言里面是沒有hash表的&#xff0c;但是我們可以用一個結構體表示&#xff0c;對結構體排序&#xff0c;我們可以用qsort排序。 下面我們用一個LeedCode上面的一道題目講解。 347. 前 K 個高頻元素 這個題目是讓我們求解前k個高頻元素&#xff0c;求解思…

ORACLE10g R2及PATH官方下載地址

ORACLE10g R2及PATH官方下載地址 Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Microsoft Windows (32-bit)http://download.oracle.com/otn/nt/oracle10g/10201/10201_database_win32.zip http://download.oracle.com/otn/nt/oracle10g/102…