Maison base de données tutoriel mysql Oracle 11g中CTE应用示例

Oracle 11g中CTE应用示例

Jun 07, 2016 pm 03:01 PM
oracle sql à propos 应用 示例

关于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
 '创建时间';
Copier après la connexion

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;
Copier après la connexion

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;
Copier après la connexion

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
Copier après la connexion

Oracle 11g中CTE应用示例



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


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment vérifier la taille de l'espace de table d'Oracle Comment vérifier la taille de l'espace de table d'Oracle Apr 11, 2025 pm 08:15 PM

Pour interroger la taille de l'espace de table Oracle, suivez les étapes suivantes: Déterminez le nom de l'espace de table en exécutant la requête: sélectionnez Tablespace_name dans dba_tablespaces; Requête la taille de l'espace de table en exécutant la requête: sélectionnez SUM (Bytes) comme total_size, sum (bytes_free) comme disponible_space, sum (bytes) - sum (bytes_free) comme used_space à partir de dba_data_files où tablespace_

Comment importer une base de données Oracle Comment importer une base de données Oracle Apr 11, 2025 pm 08:06 PM

Méthode d'importation de données: 1. Utilisez l'utilitaire SqlLoader: Préparez les fichiers de données, créez des fichiers de contrôle et exécutez SqlLoader; 2. Utilisez l'outil IMP / EXP: les données d'exportation, les données d'importation. Astuce: 1. Chargeur SQL * recommandé pour les ensembles de Big Data; 2. La table cible doit exister et la définition de la colonne correspond; 3. Après l'importation, l'intégrité des données doit être vérifiée.

Comment créer une table dans Oracle Comment créer une table dans Oracle Apr 11, 2025 pm 08:00 PM

La création d'une table Oracle implique les étapes suivantes: Utilisez la syntaxe de la table Create pour spécifier les noms de table, les noms de colonne, les types de données, les contraintes et les valeurs par défaut. Le nom du tableau doit être concis et descriptif et ne doit pas dépasser 30 caractères. Le nom de la colonne doit être descriptif et le type de données spécifie le type de données stocké dans la colonne. La contrainte non nulle garantit que les valeurs nulles ne sont pas autorisées dans la colonne, et la clause par défaut spécifie les valeurs par défaut pour la colonne. Contraintes de clé primaire pour identifier l'enregistrement unique du tableau. La contrainte de clé étrangère spécifie que la colonne du tableau fait référence à la clé primaire dans un autre tableau. Voir la création des élèves de la table de l'échantillon, qui contient des clés primaires, des contraintes uniques et des valeurs par défaut.

Comment désinstaller l'installation d'Oracle a échoué Comment désinstaller l'installation d'Oracle a échoué Apr 11, 2025 pm 08:24 PM

Désinstaller la méthode pour la défaillance de l'installation d'Oracle: Fermez le service Oracle, supprimez les fichiers du programme Oracle et les clés de registre, désinstallez les variables d'environnement Oracle et redémarrez l'ordinateur. Si la désinstallation échoue, vous pouvez désinstaller manuellement à l'aide de l'outil Oracle Universal Disinstal.

Comment remettre à nouveau Oracle Comment remettre à nouveau Oracle Apr 11, 2025 pm 07:33 PM

Oracle fournit plusieurs méthodes de requête de déduplication: le mot-clé distinct renvoie une valeur unique pour chaque colonne. Le groupe par clause regroupe les résultats et renvoie une valeur non réactive pour chaque groupe. Le mot-clé unique est utilisé pour créer un index ne contenant que des lignes uniques, et l'interrogation de l'index sera automatiquement déducteur. La fonction ROW_NUMBER () attribue des nombres uniques et filtre les résultats qui contiennent uniquement la ligne 1. La fonction min () ou max () renvoie les valeurs non réactives d'une colonne numérique. L'opérateur intersecte renvoie les valeurs communes des deux ensembles de résultats (pas de doublons).

Comment crypter Oracle View Comment crypter Oracle View Apr 11, 2025 pm 08:30 PM

Oracle View Encryption vous permet de crypter les données dans la vue, améliorant ainsi la sécurité des informations sensibles. Les étapes incluent: 1) la création de la clé de cryptage maître (MEK); 2) Création d'une vue cryptée, spécifiant la vue et MEK à crypter; 3) Autoriser les utilisateurs à accéder à la vue cryptée. Comment fonctionnent les vues cryptées: lorsqu'un utilisateur interroge pour une vue cryptée, Oracle utilise MEK pour décrypter les données, garantissant que seuls les utilisateurs autorisés peuvent accéder aux données lisibles.

Comment afficher le nom d'instance d'Oracle Comment afficher le nom d'instance d'Oracle Apr 11, 2025 pm 08:18 PM

Il existe trois façons d'afficher les noms d'instance dans Oracle: utilisez le "SQLPlus" et "SELECT INSTRESS_NAME FROM V $ INSTERNE;" Commandes sur la ligne de commande. Utilisez "Show instance_name;" Commande dans SQL * Plus. Vérifiez les variables d'environnement (Oracle_sid sur Linux) via le gestionnaire de tâches du système d'exploitation, Oracle Enterprise Manager ou via le système d'exploitation.

Que faire si l'oracle ne peut pas être ouvert Que faire si l'oracle ne peut pas être ouvert Apr 11, 2025 pm 10:06 PM

Les solutions à Oracle ne peuvent pas être ouvertes comprennent: 1. Démarrer le service de base de données; 2. Commencez l'auditeur; 3. Vérifiez les conflits portuaires; 4. Définir correctement les variables d'environnement; 5. Assurez-vous que le pare-feu ou le logiciel antivirus ne bloque pas la connexion; 6. Vérifiez si le serveur est fermé; 7. Utilisez RMAN pour récupérer les fichiers corrompus; 8. Vérifiez si le nom du service TNS est correct; 9. Vérifier la connexion réseau; 10. Réinstaller le logiciel Oracle.

See all articles