Rumah pangkalan data tutorial mysql Oracle 11g中CTE应用示例

Oracle 11g中CTE应用示例

Jun 07, 2016 pm 03:01 PM
oracle sql kira-kira permohonan Contoh

关于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
 '创建时间';
Salin selepas log masuk

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;
Salin selepas log masuk

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;
Salin selepas log masuk

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
Salin selepas log masuk

Oracle 11g中CTE应用示例



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


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Berfungsi untuk mengira bilangan hari antara dua tarikh dalam oracle Berfungsi untuk mengira bilangan hari antara dua tarikh dalam oracle May 08, 2024 pm 07:45 PM

Fungsi dalam Oracle untuk mengira bilangan hari antara dua tarikh ialah DATEDIFF(). Penggunaan khusus adalah seperti berikut: Tentukan unit selang masa: selang (seperti hari, bulan, tahun) Tentukan dua nilai tarikh: tarikh1 dan tarikh2DATEDIFF(selang, tarikh1, tarikh2) Kembalikan perbezaan hari

Berapa lama log pangkalan data Oracle akan disimpan? Berapa lama log pangkalan data Oracle akan disimpan? May 10, 2024 am 03:27 AM

Tempoh pengekalan log pangkalan data Oracle bergantung pada jenis log dan konfigurasi, termasuk: Buat semula log: ditentukan oleh saiz maksimum yang dikonfigurasikan dengan parameter "LOG_ARCHIVE_DEST". Log buat semula yang diarkibkan: Ditentukan oleh saiz maksimum yang dikonfigurasikan oleh parameter "DB_RECOVERY_FILE_DEST_SIZE". Log buat semula dalam talian: tidak diarkibkan, hilang apabila pangkalan data dimulakan semula dan tempoh pengekalan adalah konsisten dengan masa berjalan contoh. Log audit: Dikonfigurasikan oleh parameter "AUDIT_TRAIL", dikekalkan selama 30 hari secara lalai.

Urutan langkah permulaan pangkalan data oracle ialah Urutan langkah permulaan pangkalan data oracle ialah May 10, 2024 am 01:48 AM

Urutan permulaan pangkalan data Oracle ialah: 1. Semak prasyarat 2. Mulakan pendengar 3. Mulakan contoh pangkalan data 5. Sambungkan ke pangkalan data; . Dayakan perkhidmatan (jika perlu );

Cara menggunakan selang dalam oracle Cara menggunakan selang dalam oracle May 08, 2024 pm 07:54 PM

Jenis data INTERVAL dalam Oracle digunakan untuk mewakili selang masa Sintaksnya ialah INTERVAL <precision> <unit> Anda boleh menggunakan operasi tambah, tolak, darab dan bahagi untuk mengendalikan INTERVAL, yang sesuai untuk senario seperti menyimpan data masa dan. mengira perbezaan tarikh.

Bagaimana untuk melihat bilangan kemunculan watak tertentu dalam Oracle Bagaimana untuk melihat bilangan kemunculan watak tertentu dalam Oracle May 09, 2024 pm 09:33 PM

Untuk mencari bilangan kemunculan aksara dalam Oracle, lakukan langkah-langkah berikut: Dapatkan jumlah panjang rentetan Dapatkan panjang subrentetan di mana aksara berlaku; daripada jumlah panjang.

Keperluan konfigurasi perkakasan pelayan pangkalan data Oracle Keperluan konfigurasi perkakasan pelayan pangkalan data Oracle May 10, 2024 am 04:00 AM

Keperluan konfigurasi perkakasan pelayan pangkalan data Oracle: Pemproses: berbilang teras, dengan frekuensi utama sekurang-kurangnya 2.5 GHz Untuk pangkalan data yang besar, 32 teras atau lebih disyorkan. Memori: Sekurang-kurangnya 8GB untuk pangkalan data kecil, 16-64GB untuk saiz sederhana, sehingga 512GB atau lebih untuk pangkalan data yang besar atau beban kerja yang berat. Storan: Cakera SSD atau NVMe, tatasusunan RAID untuk lebihan dan prestasi. Rangkaian: Rangkaian berkelajuan tinggi (10GbE atau lebih tinggi), kad rangkaian khusus, rangkaian kependaman rendah. Lain-lain: Bekalan kuasa yang stabil, komponen berlebihan, sistem pengendalian dan perisian yang serasi, pelesapan haba dan sistem penyejukan.

Berapa banyak memori yang diperlukan oleh oracle? Berapa banyak memori yang diperlukan oleh oracle? May 10, 2024 am 04:12 AM

Jumlah memori yang diperlukan oleh Oracle bergantung pada saiz pangkalan data, tahap aktiviti dan tahap prestasi yang diperlukan: untuk menyimpan penimbal data, penimbal indeks, melaksanakan pernyataan SQL dan mengurus cache kamus data. Jumlah yang tepat dipengaruhi oleh saiz pangkalan data, tahap aktiviti dan tahap prestasi yang diperlukan. Amalan terbaik termasuk menetapkan saiz SGA yang sesuai, saiz komponen SGA, menggunakan AMM dan memantau penggunaan memori.

Apakah simbol yang digunakan untuk menyambung rentetan ke pangkalan data dalam Oracle? Apakah simbol yang digunakan untuk menyambung rentetan ke pangkalan data dalam Oracle? May 08, 2024 pm 07:36 PM

Oracle menggunakan simbol "||" untuk menggabungkan rentetan. Kaedah penggunaan adalah seperti berikut: sambungkan rentetan yang akan disambungkan dengan simbol "||" keutamaan sambungan rentetan adalah rendah, dan kurungan perlu digunakan untuk memastikan rentetan kosong akan tetap menjadi rentetan kosong; sambungan; sambungan nilai NULL masih NULL.

See all articles