Home Database Mysql Tutorial Oracle 11g中CTE应用示例

Oracle 11g中CTE应用示例

Jun 07, 2016 pm 03:01 PM
oracle sql about application Example

关于SQL SERVER中的CTE中的CTE应用,请看这里:http://blog.csdn.net/downmoon/archive/2009/10/23/4715814.aspx 其实,ORACLE的CTE语法完全一样,看示例: 一、创建示例数据表如下: View Code declare tableExistedCount number; begin select count(1) in


关于SQL SERVER中的CTE中的CTE应用,请看这里:http://blog.csdn.net/downmoon/archive/2009/10/23/4715814.aspx

其实,ORACLE的CTE语法完全一样,看示例:

一、创建示例数据表如下:

View Code 
 declare 
       tableExistedCount  number; 
 begin 
       select count(1) into tableExistedCount  from user_tables where TABLE_NAME ='DemoOrganization';
       if   tableExistedCount =1   then 
          execute immediate ' drop table DemoOrganization cascade constraints';
       end   if; 
 end;
 
 /*==============================================================*/
 /* Table: DemoOrganization                                      */
 /*==============================================================*/
 create table DemoOrganization 
 (
    OrgID                NUMBER(20,0)         not null,
    OrgCode              VARCHAR2(100),
    OrgName              NVARCHAR2(100),
    OrgPath              VARCHAR2(500),
    ParentID             INTEGER,
    OLevel               INTEGER              default 0,
    OrderID              NUMBER(10,0),
    CurState             INTEGER              default 0,
    AddUser              VARCHAR2(50),
    AddTime              DATE,
    constraint PK_DEMOORGANIZATION primary key (OrgID)
 );
 
 comment on table DemoOrganization is
 '演示组织机构';
 
 comment on column DemoOrganization.OrgID is
 '机构ID';
 
 comment on column DemoOrganization.OrgCode is
 '机构编码';
 
 comment on column DemoOrganization.OrgName is
 '机构名称';
 
 comment on column DemoOrganization.OrgPath is
 '机构路径';
 
 comment on column DemoOrganization.ParentID is
 '上级ID';
 
 comment on column DemoOrganization.OLevel is
 '级别';
 
 comment on column DemoOrganization.OrderID is
 '排序';
 
 comment on column DemoOrganization.CurState is
 '当前状态';
 
 comment on column DemoOrganization.AddUser is
 '创建人';
 
 comment on column DemoOrganization.AddTime is
 '创建时间';
Copy after login

Oracle 11g中CTE应用示例

并插入测试数据:

View Code 
 drop sequence SEQ_DEMOORGANIZATION;
 -- Create sequence 
 create sequence SEQ_DEMOORGANIZATION
 minvalue 1
 maxvalue 999999999999999
 start with 1
 increment by 1
 cache 201;
 
 create or replace trigger TRI_SEQ_DEMOORGANIZATION
 before insert on DEMOORGANIZATION
 
 for each row
 begin
 select SEQ_DEMOORGANIZATION.NEXTVAL into:new.ORGID from dual;
 end;
 
 truncate table DEMOORGANIZATION;
 
 INSERT INTO DEMOORGANIZATION(ORGNAME,OLEVEL,ORGPATH,PARENTID ,ADDTIME ,ADDUSER, ORDERID  ,CURSTATE)
 select '组织机构1',1,'0',0,sysdate,'testUser',13,0  from dual union all
 select '组织机构2',1,'0',0,sysdate,'testUser',12,0  from dual union all
 select '组织机构3',1,'0',0,sysdate,'testUser' ,10,0  from dual union all
 select '组织机构4',2,'1',1,sysdate,'testUser' ,19,0  from dual union all
 select '组织机构5',2,'2',2,sysdate,'testUser' ,17,0  from dual union all
 select '组织机构6',3,'1/4',4,sysdate,'testUser' ,16,0  from dual union all
 select '组织机构7',3,'1/4',4,sysdate,'testUser' ,4,0  from dual union all
 select '组织机构8',3,'2/5',5,sysdate,'testUser' ,3, 0 from dual union all
 select '组织机构9',4,'1/4/6',6,sysdate,'testUser' ,5,0  from dual union all
 select '组织机构10',4,'1/4/6',6,sysdate,'testUser' ,63,0  from dual union all
 select '组织机构11',4,'1/4/6',6,sysdate,'testUser' ,83,0  from dual union all
 select '组织机构12',4,'2/5/8',8,sysdate,'testUser' ,3,0  from dual union all
 select '组织机构13',4,'2/5/8',8,sysdate,'testUser', 1,0  from dual;
 
 select * from DEMOORGANIZATION;
Copy after login

Oracle 11g中CTE应用示例

二、示例:

1、--查询ORGID为2的机构包含所有子机构,且级别不大于2

WITH SimpleRecursive(ORGNAME, ORGID, ORGPATH,PARENTID,OLEVEL)
    AS
(SELECT ORGNAME, ORGID, ORGPATH,PARENTID,0  FROM DEMOORGANIZATION WHERE ORGID = 2
UNION ALL
SELECT P.ORGNAME, P.ORGID, P.ORGPATH,P.PARENTID,P.OLEVEL+1
 FROM DEMOORGANIZATION  P  INNER JOIN
 SimpleRecursive A ON A.ORGID = P.PARENTID
)
SELECT sr.ORGNAME as ORGNAME, c.ORGNAME as PARENTIDName,sr.ORGPATH as PARENTIDCode
FROM SimpleRecursive sr inner join DEMOORGANIZATION c
on sr.PARENTID=c.ORGID
where c.OLEVEL<p><img  src="/static/imghw/default1.png" data-src="pic/20151007/sdsgj5s52f2.png" class="lazy" alt="Oracle 11g中CTE应用示例" ></p><p>2、--查询ORGID为2的机构包含所有子机构,且级别不大于3</p><pre class="brush:php;toolbar:false">SELECT ORGNAME as ORGNAME,
(Select ORGNAME from DEMOORGANIZATION s where c.PARENTID=s.ORGID) as PARENTNAME,
ORGPATH as ORGPATH,OLEVEL
from DEMOORGANIZATION c where ORGPATH like'2/%' and OLEVEL<p>3、--查找某个ORGID为12的部门对应的所有树级部门<br></p><pre class="brush:php;toolbar:false">SELECT ORGID, OLEVEL, ORGNAME, PARENTID
  FROM DEMOORGANIZATION D
 START WITH ORGID IN (SELECT ORGID
                        FROM DEMOORGANIZATION
                       WHERE ORGID = 12
                         AND ROWNUM = 1)
CONNECT BY PRIOR D.PARENTID = ORGID;
Copy after login

Oracle 11g中CTE应用示例
4、--查找某个ORGID为12的部门对应的顶级部门            

SELECT *
 FROM (SELECT FIRST_VALUE(ORGNAME) OVER(ORDER BY LEVEL DESC ROWS UNBOUNDED PRECEDING) AS FIRSTID
         FROM DEMOORGANIZATION
        START WITH ORGID = 12
       CONNECT BY PRIOR PARENTID = ORGID) T
WHERE ROWNUM = 1
Copy after login

Oracle 11g中CTE应用示例



助人等于自助!   3w@live.cn


Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1662
14
PHP Tutorial
1262
29
C# Tutorial
1236
24
How to solve the problem of closing oracle cursor How to solve the problem of closing oracle cursor Apr 11, 2025 pm 10:18 PM

The method to solve the Oracle cursor closure problem includes: explicitly closing the cursor using the CLOSE statement. Declare the cursor in the FOR UPDATE clause so that it automatically closes after the scope is ended. Declare the cursor in the USING clause so that it automatically closes when the associated PL/SQL variable is closed. Use exception handling to ensure that the cursor is closed in any exception situation. Use the connection pool to automatically close the cursor. Disable automatic submission and delay cursor closing.

How to create cursors in oracle loop How to create cursors in oracle loop Apr 12, 2025 am 06:18 AM

In Oracle, the FOR LOOP loop can create cursors dynamically. The steps are: 1. Define the cursor type; 2. Create the loop; 3. Create the cursor dynamically; 4. Execute the cursor; 5. Close the cursor. Example: A cursor can be created cycle-by-circuit to display the names and salaries of the top 10 employees.

What to do if the oracle log is full What to do if the oracle log is full Apr 12, 2025 am 06:09 AM

When Oracle log files are full, the following solutions can be adopted: 1) Clean old log files; 2) Increase the log file size; 3) Increase the log file group; 4) Set up automatic log management; 5) Reinitialize the database. Before implementing any solution, it is recommended to back up the database to prevent data loss.

What steps are required to configure CentOS in HDFS What steps are required to configure CentOS in HDFS Apr 14, 2025 pm 06:42 PM

Building a Hadoop Distributed File System (HDFS) on a CentOS system requires multiple steps. This article provides a brief configuration guide. 1. Prepare to install JDK in the early stage: Install JavaDevelopmentKit (JDK) on all nodes, and the version must be compatible with Hadoop. The installation package can be downloaded from the Oracle official website. Environment variable configuration: Edit /etc/profile file, set Java and Hadoop environment variables, so that the system can find the installation path of JDK and Hadoop. 2. Security configuration: SSH password-free login to generate SSH key: Use the ssh-keygen command on each node

Oracle's Role in the Business World Oracle's Role in the Business World Apr 23, 2025 am 12:01 AM

Oracle is not only a database company, but also a leader in cloud computing and ERP systems. 1. Oracle provides comprehensive solutions from database to cloud services and ERP systems. 2. OracleCloud challenges AWS and Azure, providing IaaS, PaaS and SaaS services. 3. Oracle's ERP systems such as E-BusinessSuite and FusionApplications help enterprises optimize operations.

How to stop oracle database How to stop oracle database Apr 12, 2025 am 06:12 AM

To stop an Oracle database, perform the following steps: 1. Connect to the database; 2. Shutdown immediately; 3. Shutdown abort completely.

How to export oracle view How to export oracle view Apr 12, 2025 am 06:15 AM

Oracle views can be exported through the EXP utility: Log in to the Oracle database. Start the EXP utility, specifying the view name and export directory. Enter export parameters, including target mode, file format, and tablespace. Start exporting. Verify the export using the impdp utility.

How to configure the database connection of weblogic on centos How to configure the database connection of weblogic on centos Apr 14, 2025 pm 02:06 PM

Configuring WebLogic database connection on a CentOS system requires the following steps: JDK installation and environment configuration: Make sure that the server has installed a JDK that is compatible with the WebLogic version (for example, WebLogic14.1.1 usually requires JDK8). Correctly set JAVA_HOME, CLASSPATH and PATH environment variables. WebLogic installation and decompression: Download the WebLogic installation package for CentOS system from the official Oracle website and unzip it to the specified directory. WebLogic user and directory creation: Create a dedicated WebLogic user account and set a security password

See all articles