You are on page 1of 18

SQL> cl scr SQL> DESC USER_OBJECTS Name Null?

----------------------------------------- -------OBJECT_NAME SUBOBJECT_NAME OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE CREATED LAST_DDL_TIME TIMESTAMP STATUS TEMPORARY GENERATED SECONDARY SQL> SQL> SQL> 2 3 COLUMN Object_Name FORMAT A20 COLUMN Object_Type FORMAT A15 SELECT OBJECT_NAME, OBJECT_TYPE FROM USER_OBJECTS WHERE OBJECT_TYPE = 'SEQUENCE'; OBJECT_TYPE --------------SEQUENCE SEQUENCE SEQUENCE SEQUENCE SEQUENCE SEQUENCE SEQUENCE SEQUENCE SEQUENCE SEQUENCE SEQUENCE Type ---------------------------VARCHAR2(128) VARCHAR2(30) NUMBER NUMBER VARCHAR2(19) DATE DATE VARCHAR2(19) VARCHAR2(7) VARCHAR2(1) VARCHAR2(1) VARCHAR2(1)

OBJECT_NAME -------------------ORDID PRODID CUSTID SAMPLESEQ01 SAMPLESEQ02 SAMPLESEQ03 SAMPLESEQ04 SAMPLESEQ05 SAMPLESEQ06 SAMPLESEQ07 AUDIT_SEQ 11 rows selected.

SQL> DESC USER_SEQUENCES Name ----------------------------------------SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY CYCLE_FLAG ORDER_FLAG CACHE_SIZE LAST_NUMBER SQL> SQL> SQL> SQL> SQL> SQL> 2 3

Null? Type -------- ---------------------------NOT NULL VARCHAR2(30) NUMBER NUMBER NOT NULL NUMBER VARCHAR2(1) VARCHAR2(1) NOT NULL NUMBER NOT NULL NUMBER

COLUMN SEQUENCE_NAME FORMAT A15 COLUMN MIN_VALUE FORMAT 99 COLUMN MAX_VALUE FORMAT 999 COLUMN INCREMENT_BY FORMAT 99 COLUMN LAST_NUMBER FORMAT 99 SELECT SEQUENCE_NAME, MIN_VALUE, MAX_VALUE, INCREMENT_BY, LAST_NUMBER FROM USER_SEQUENCES WHERE SEQUENCE_NAME = UPPER('&GiveSeqName');

Enter value for giveseqname: SAMPLESEQ01 old 3: WHERE SEQUENCE_NAME = UPPER('&GiveSeqName') new 3: WHERE SEQUENCE_NAME = UPPER('SAMPLESEQ01') SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY LAST_NUMBER --------------- --------- --------- ------------ ----------SAMPLESEQ01 0 5 1 6 SQL> / Enter value for giveseqname: SAMPLESEQ07 old 3: WHERE SEQUENCE_NAME = UPPER('&GiveSeqName') new 3: WHERE SEQUENCE_NAME = UPPER('SAMPLESEQ07') SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY LAST_NUMBER --------------- --------- --------- ------------ ----------SAMPLESEQ07 0 15 1 15 SQL> / Enter value for giveseqname: SAMPLESEQ05 old 3: WHERE SEQUENCE_NAME = UPPER('&GiveSeqName') new 3: WHERE SEQUENCE_NAME = UPPER('SAMPLESEQ05') SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY LAST_NUMBER --------------- --------- --------- ------------ ----------SAMPLESEQ05 0 10 -1 7 SQL> / Enter value for giveseqname: SAMPLESEQ04 old 3: WHERE SEQUENCE_NAME = UPPER('&GiveSeqName') new 3: WHERE SEQUENCE_NAME = UPPER('SAMPLESEQ04') SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY LAST_NUMBER --------------- --------- --------- ------------ ----------SAMPLESEQ04 0 10 1 11 SQL> SELECT SAMPLESEQ04.CURRVAL FROM DUAl; SELECT SAMPLESEQ04.CURRVAL FROM DUAl * ERROR at line 1: ORA-08002: sequence SAMPLESEQ04.CURRVAL is not yet defined in this session SQL> SELECT SAMPLESEQ04.NEXTVAL FROM DUAl; SELECT SAMPLESEQ04.NEXTVAL FROM DUAl * ERROR at line 1: ORA-08004: sequence SAMPLESEQ04.NEXTVAL exceeds MAXVALUE and cannot be instantiated SQL> SELECT SAMPLESEQ04.CURRVAL FROM DUAl; SELECT SAMPLESEQ04.CURRVAL FROM DUAl * ERROR at line 1: ORA-08002: sequence SAMPLESEQ04.CURRVAL is not yet defined in this session SQL> SELECT SEQUENCE_NAME, MIN_VALUE, MAX_VALUE, INCREMENT_BY, LAST_NUMBER 2 FROM USER_SEQUENCES 3 WHERE SEQUENCE_NAME = UPPER('&GiveSeqName');

Enter value for giveseqname: SAMPLESEQ02 old 3: WHERE SEQUENCE_NAME = UPPER('&GiveSeqName') new 3: WHERE SEQUENCE_NAME = UPPER('SAMPLESEQ02') SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY LAST_NUMBER --------------- --------- --------- ------------ ----------SAMPLESEQ02 0 5 1 1 SQL> SELECT SAMPLESEQ02.CURRVAL FROM DUAl; SELECT SAMPLESEQ02.CURRVAL FROM DUAl * ERROR at line 1: ORA-08002: sequence SAMPLESEQ02.CURRVAL is not yet defined in this session SQL> SELECT SAMPLESEQ02.NEXTVAL FROM DUAl; NEXTVAL ---------1 SQL> SELECT SEQUENCE_NAME, MIN_VALUE, MAX_VALUE, INCREMENT_BY, LAST_NUMBER 2 FROM USER_SEQUENCES 3 WHERE SEQUENCE_NAME = UPPER('&GiveSeqName'); Enter value for giveseqname: SAMPLESEQ02 old 3: WHERE SEQUENCE_NAME = UPPER('&GiveSeqName') new 3: WHERE SEQUENCE_NAME = UPPER('SAMPLESEQ02') SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY LAST_NUMBER --------------- --------- --------- ------------ ----------SAMPLESEQ02 0 5 1 2 SQL> SELECT SAMPLESEQ02.CURRVAL FROM DUAl; CURRVAL ---------1 SQL> SELECT SAMPLESEQ02.NEXTVAL FROM DUAl; NEXTVAL ---------2 SQL> cl scr SQL> SELECT LEVEL, Ename, Job, MGR 2 FROM Emp; FROM Emp * ERROR at line 2: ORA-01788: CONNECT BY clause required in this query block SQL> ed Wrote file afiedt.buf 1 SELECT LEVEL, Ename, Job, MGR 2 FROM Emp 3* CONNECT BY PRIOR Empno = MGR

SQL> / LEVEL ---------1 2 1 2 1 1 1 1 1 1 1 LEVEL ---------1 2 2 2 2 2 1 2 1 2 3 LEVEL ---------2 3 1 1 2 3 3 3 3 3 2 LEVEL ---------3 2 3 4 3 4 ENAME ---------FORD SMITH SCOTT ADAMS MARTIN ALLEN JAMES WARD TURNER MILLER ADAMS ENAME ---------BLAKE MARTIN ALLEN JAMES WARD TURNER CLARK MILLER JONES FORD SMITH ENAME ---------SCOTT ADAMS SMITH KING BLAKE MARTIN ALLEN JAMES WARD TURNER CLARK ENAME ---------MILLER JONES FORD SMITH SCOTT ADAMS JOB MGR --------- ---------ANALYST 7566 CLERK 7902 ANALYST 7566 CLERK 7788 SALESMAN 7698 SALESMAN 7698 CLERK 7698 SALESMAN 7698 SALESMAN 7698 CLERK 7782 CLERK 7788 JOB MGR --------- ---------MANAGER 7839 SALESMAN 7698 SALESMAN 7698 CLERK 7698 SALESMAN 7698 SALESMAN 7698 MANAGER 7839 CLERK 7782 MANAGER 7839 ANALYST 7566 CLERK 7902 JOB MGR --------- ---------ANALYST 7566 CLERK 7788 CLERK 7902 PRESIDENT MANAGER 7839 SALESMAN 7698 SALESMAN 7698 CLERK 7698 SALESMAN 7698 SALESMAN 7698 MANAGER 7839 JOB MGR --------- ---------CLERK 7782 MANAGER 7839 ANALYST 7566 CLERK 7902 ANALYST 7566 CLERK 7788

39 rows selected. SQL> cl scr SQL> ed Wrote file afiedt.buf

1 2 3 4* SQL>

SELECT LEVEL, Ename, Job, MGR FROM Emp START WITH Ename = 'KING' CONNECT BY PRIOR Empno = MGR / ENAME ---------KING BLAKE MARTIN ALLEN TURNER JAMES WARD CLARK MILLER JONES FORD ENAME ---------SMITH SCOTT ADAMS JOB MGR --------- ---------PRESIDENT MANAGER 7839 SALESMAN 7698 SALESMAN 7698 SALESMAN 7698 CLERK 7698 SALESMAN 7698 MANAGER 7839 CLERK 7782 MANAGER 7839 ANALYST 7566 JOB MGR --------- ---------CLERK 7902 ANALYST 7566 CLERK 7788

LEVEL ---------1 2 3 3 3 3 3 2 3 2 3 LEVEL ---------4 3 4

14 rows selected. SQL> ed Wrote file afiedt.buf 1 2 3 4 5* SQL> SELECT LEVEL, Ename, Job, MGR FROM Emp WHERE LEVEL = 1 START WITH Ename = 'KING' CONNECT BY PRIOR Empno = MGR /

LEVEL ENAME JOB MGR ---------- ---------- --------- ---------1 KING PRESIDENT SQL> ed Wrote file afiedt.buf 1 2 3 4 5* SQL> SELECT LEVEL, Ename, Job, MGR FROM Emp WHERE LEVEL = 3 START WITH Ename = 'KING' CONNECT BY PRIOR Empno = MGR / ENAME ---------MARTIN ALLEN TURNER JAMES WARD MILLER JOB MGR --------- ---------SALESMAN 7698 SALESMAN 7698 SALESMAN 7698 CLERK 7698 SALESMAN 7698 CLERK 7782

LEVEL ---------3 3 3 3 3 3

3 FORD 3 SCOTT 8 rows selected. SQL> ed Wrote file afiedt.buf 1 2 3 4 5* SQL>

ANALYST ANALYST

7566 7566

SELECT LEVEL, Ename, Job, MGR FROM Emp WHERE LEVEL IN(1, 3) START WITH Ename = 'KING' CONNECT BY PRIOR Empno = MGR / ENAME ---------KING MARTIN ALLEN TURNER JAMES WARD MILLER FORD SCOTT JOB MGR --------- ---------PRESIDENT SALESMAN 7698 SALESMAN 7698 SALESMAN 7698 CLERK 7698 SALESMAN 7698 CLERK 7782 ANALYST 7566 ANALYST 7566

LEVEL ---------1 3 3 3 3 3 3 3 3

9 rows selected. SQL> cl scr SQL> SQL> 2 3 4 5 6 COLUMN Org_Level FORMAT A15 SELECT LPAD(LEVEL, ((2 * LEVEL) - 1)) Org_Level, Ename, Empno, Mgr, Job FROM Emp START WITH Job = 'PRESIDENT' CONNECT BY PRIOR Empno = MGR; ENAME EMPNO MGR JOB ---------- ---------- ---------- --------KING 7839 PRESIDENT BLAKE 7698 7839 MANAGER MARTIN 7654 7698 SALESMAN ALLEN 7499 7698 SALESMAN TURNER 7844 7698 SALESMAN JAMES 7900 7698 CLERK WARD 7521 7698 SALESMAN CLARK 7782 7839 MANAGER MILLER 7934 7782 CLERK JONES 7566 7839 MANAGER FORD 7902 7566 ANALYST ENAME EMPNO MGR JOB ---------- ---------- ---------- --------SMITH 7369 7902 CLERK SCOTT 7788 7566 ANALYST ADAMS 7876 7788 CLERK

ORG_LEVEL --------------1 2 3 3 3 3 3 2 3 2 3 ORG_LEVEL --------------4 3 4

14 rows selected.

SQL> ed Wrote file afiedt.buf 1 2 3 4 5* SQL> SELECT LPAD(' ', ((2 * LEVEL) - 1))||Ename Ename, Empno, Mgr, Job FROM Emp START WITH Job = 'PRESIDENT' CONNECT BY PRIOR Empno = MGR /

ENAME -------------------------------------------------------------------------------EMPNO MGR JOB ---------- ---------- --------KING 7839 PRESIDENT BLAKE 7698 MARTIN 7654 7839 MANAGER 7698 SALESMAN

ENAME -------------------------------------------------------------------------------EMPNO MGR JOB ---------- ---------- --------ALLEN 7499 7698 SALESMAN TURNER 7844 JAMES 7900 7698 SALESMAN 7698 CLERK

ENAME -------------------------------------------------------------------------------EMPNO MGR JOB ---------- ---------- --------WARD 7521 7698 SALESMAN CLARK 7782 MILLER 7934 7839 MANAGER 7782 CLERK

ENAME -------------------------------------------------------------------------------EMPNO MGR JOB ---------- ---------- --------JONES 7566 7839 MANAGER

FORD 7902 SMITH 7369

7566 ANALYST 7902 CLERK

ENAME -------------------------------------------------------------------------------EMPNO MGR JOB ---------- ---------- --------SCOTT 7788 7566 ANALYST ADAMS 7876 14 rows selected. SQL> COLUMN ENAME FORMAt A20 SQL> / ENAME EMPNO MGR JOB -------------------- ---------- ---------- --------KING 7839 PRESIDENT BLAKE 7698 7839 MANAGER MARTIN 7654 7698 SALESMAN ALLEN 7499 7698 SALESMAN TURNER 7844 7698 SALESMAN JAMES 7900 7698 CLERK WARD 7521 7698 SALESMAN CLARK 7782 7839 MANAGER MILLER 7934 7782 CLERK JONES 7566 7839 MANAGER FORD 7902 7566 ANALYST ENAME EMPNO MGR JOB -------------------- ---------- ---------- --------SMITH 7369 7902 CLERK SCOTT 7788 7566 ANALYST ADAMS 7876 7788 CLERK 14 rows selected. SQL> cl scr SQL> 1 2 3 4 5* R SELECT LPAD(' ', ((2 * LEVEL) - 1))||Ename Ename, Empno, Mgr, Job FROM Emp START WITH Job = 'PRESIDENT' CONNECT BY PRIOR Empno = MGR 7788 CLERK

ENAME EMPNO MGR JOB -------------------- ---------- ---------- --------KING 7839 PRESIDENT BLAKE 7698 7839 MANAGER MARTIN 7654 7698 SALESMAN ALLEN 7499 7698 SALESMAN

TURNER JAMES WARD CLARK MILLER JONES FORD

7844 7900 7521 7782 7934 7566 7902

7698 7698 7698 7839 7782 7839 7566

SALESMAN CLERK SALESMAN MANAGER CLERK MANAGER ANALYST

ENAME EMPNO MGR JOB -------------------- ---------- ---------- --------SMITH 7369 7902 CLERK SCOTT 7788 7566 ANALYST ADAMS 7876 7788 CLERK 14 rows selected. SQL> ed Wrote file afiedt.buf 1 2 3 4 5 6* SQL> SELECT LPAD(' ', ((2 * LEVEL) - 1))||Ename Ename, Empno, Mgr, Job FROM Emp WHERE LEVEL = 2 START WITH Job = 'PRESIDENT' CONNECT BY PRIOR Empno = MGR /

ENAME EMPNO MGR JOB -------------------- ---------- ---------- --------BLAKE 7698 7839 MANAGER CLARK 7782 7839 MANAGER JONES 7566 7839 MANAGER SQL> ed Wrote file afiedt.buf 1 2 3 4 5 6* SQL> SELECT LPAD(' ', ((2 * LEVEL) - 1))||Ename Ename, Empno, Mgr, Job FROM Emp WHERE LEVEL IN(2, 3) START WITH Job = 'PRESIDENT' CONNECT BY PRIOR Empno = MGR /

ENAME EMPNO MGR JOB -------------------- ---------- ---------- --------BLAKE 7698 7839 MANAGER MARTIN 7654 7698 SALESMAN ALLEN 7499 7698 SALESMAN TURNER 7844 7698 SALESMAN JAMES 7900 7698 CLERK WARD 7521 7698 SALESMAN CLARK 7782 7839 MANAGER MILLER 7934 7782 CLERK JONES 7566 7839 MANAGER FORD 7902 7566 ANALYST SCOTT 7788 7566 ANALYST 11 rows selected.

SQL> ed Wrote file afiedt.buf 1 2 3 4 5 6* SQL> SELECT LPAD(' ', ((2 * LEVEL) - 1))||Ename Ename, Empno, Mgr, Job FROM Emp WHERE LEVEL IN(2, 3) START WITH Ename = 'BLAKE' CONNECT BY PRIOR Empno = MGR /

ENAME EMPNO MGR JOB -------------------- ---------- ---------- --------MARTIN 7654 7698 SALESMAN ALLEN 7499 7698 SALESMAN TURNER 7844 7698 SALESMAN JAMES 7900 7698 CLERK WARD 7521 7698 SALESMAN SQL> ed Wrote file afiedt.buf 1 2 3 4 5 6* SQL> SELECT LPAD(' ', ((2 * LEVEL) - 1))||Ename Ename, Empno, Mgr, Job FROM Emp START WITH Ename = 'BLAKE' CONNECT BY PRIOR Empno = MGR AND LEVEL IN(2, 3) /

ENAME EMPNO MGR JOB -------------------- ---------- ---------- --------BLAKE 7698 7839 MANAGER MARTIN 7654 7698 SALESMAN ALLEN 7499 7698 SALESMAN TURNER 7844 7698 SALESMAN JAMES 7900 7698 CLERK WARD 7521 7698 SALESMAN 6 rows selected. SQL> cl scr SQL> ed Wrote file afiedt.buf 1 SELECT 2 LPAD(LEVEL, ((2 * LEVEL) - 1))||Ename Ename, Empno, Mgr, Job 3 FROM Emp 4 START WITH Ename = 'KING' 5* CONNECT BY PRIOR Empno = MGR SQL> ed Wrote file afiedt.buf 1 2 3 4 5* SQL> SELECT LPAD(LEVEL, ((2 * LEVEL) - 1))||' '||Ename Ename, Empno, Mgr, Job FROM Emp START WITH Ename = 'KING' CONNECT BY PRIOR Empno = MGR /

ENAME EMPNO MGR JOB -------------------- ---------- ---------- --------1 KING 7839 PRESIDENT 2 BLAKE 7698 7839 MANAGER 3 MARTIN 7654 7698 SALESMAN 3 ALLEN 7499 7698 SALESMAN 3 TURNER 7844 7698 SALESMAN 3 JAMES 7900 7698 CLERK 3 WARD 7521 7698 SALESMAN 2 CLARK 7782 7839 MANAGER 3 MILLER 7934 7782 CLERK 2 JONES 7566 7839 MANAGER 3 FORD 7902 7566 ANALYST ENAME EMPNO MGR JOB -------------------- ---------- ---------- --------4 SMITH 7369 7902 CLERK 3 SCOTT 7788 7566 ANALYST 4 ADAMS 7876 7788 CLERK 14 rows selected. SQL> ed Wrote file afiedt.buf 1 2 3 4 5 6* SQL> SELECT LPAD(LEVEL, ((2 * LEVEL) - 1))||' '||Ename Ename, Empno, Mgr, Job FROM Emp WHERE Job <> 'ANALYST' START WITH Ename = 'KING' CONNECT BY PRIOR Empno = MGR /

ENAME EMPNO MGR JOB -------------------- ---------- ---------- --------1 KING 7839 PRESIDENT 2 BLAKE 7698 7839 MANAGER 3 MARTIN 7654 7698 SALESMAN 3 ALLEN 7499 7698 SALESMAN 3 TURNER 7844 7698 SALESMAN 3 JAMES 7900 7698 CLERK 3 WARD 7521 7698 SALESMAN 2 CLARK 7782 7839 MANAGER 3 MILLER 7934 7782 CLERK 2 JONES 7566 7839 MANAGER 4 SMITH 7369 7902 CLERK ENAME EMPNO MGR JOB -------------------- ---------- ---------- --------4 ADAMS 7876 7788 CLERK 12 rows selected. SQL> ed Wrote file afiedt.buf 1 SELECT 2 LPAD(LEVEL, ((2 * LEVEL) - 1))||' '||Ename Ename, Empno, Mgr, Job 3 FROM Emp

4 5 6 7* SQL>

--WHERE Job <> 'ANALYST' START WITH Ename = 'KING' CONNECT BY PRIOR Empno = MGR AND Job <> 'ANALYST' /

ENAME EMPNO MGR JOB -------------------- ---------- ---------- --------1 KING 7839 PRESIDENT 2 BLAKE 7698 7839 MANAGER 3 MARTIN 7654 7698 SALESMAN 3 ALLEN 7499 7698 SALESMAN 3 TURNER 7844 7698 SALESMAN 3 JAMES 7900 7698 CLERK 3 WARD 7521 7698 SALESMAN 2 CLARK 7782 7839 MANAGER 3 MILLER 7934 7782 CLERK 2 JONES 7566 7839 MANAGER 10 rows selected. SQL> cl scr SQL> ed Wrote file afiedt.buf 1 SELECT 2 LPAD(LEVEL, ((2 * LEVEL) - 1))||' '||Ename Ename, Empno, Mgr, Job 3 FROM Emp 4 WHERE MOD(LEVEL, 2) = &GValue 5 START WITH Ename = 'KING' 6* CONNECT BY PRIOR Empno = MGR SQL> / Enter value for gvalue: 1 old 4: WHERE MOD(LEVEL, 2) = &GValue new 4: WHERE MOD(LEVEL, 2) = 1 ENAME EMPNO MGR JOB -------------------- ---------- ---------- --------1 KING 7839 PRESIDENT 3 MARTIN 7654 7698 SALESMAN 3 ALLEN 7499 7698 SALESMAN 3 TURNER 7844 7698 SALESMAN 3 JAMES 7900 7698 CLERK 3 WARD 7521 7698 SALESMAN 3 MILLER 7934 7782 CLERK 3 FORD 7902 7566 ANALYST 3 SCOTT 7788 7566 ANALYST 9 rows selected. SQL> / Enter value for gvalue: 2 old 4: WHERE MOD(LEVEL, 2) = &GValue new 4: WHERE MOD(LEVEL, 2) = 2 no rows selected SQL> / Enter value for gvalue: 0

old new

4: WHERE MOD(LEVEL, 2) = &GValue 4: WHERE MOD(LEVEL, 2) = 0

ENAME EMPNO MGR JOB -------------------- ---------- ---------- --------2 BLAKE 7698 7839 MANAGER 2 CLARK 7782 7839 MANAGER 2 JONES 7566 7839 MANAGER 4 SMITH 7369 7902 CLERK 4 ADAMS 7876 7788 CLERK SQL> cl scr SQL> 2 3 4 5 6 7 8 9 10 11 SELECT LPAD(LEVEL, ((2 * LEVEL) - 1))||' '||Ename Org_Chart, Empno, MGR, Job, Sal FROM Emp WHERE Sal = (SELECT MAX(Sal) FROM Emp WHERE LEVEL = 2 START WITH Job = 'PRESIDENT' CONNECT BY PRIOR Empno = MGR) START WITH Job = 'PRESIDENT' CONNECT BY NOCYCLE PRIOR Empno = MGR;

ORG_CHART -------------------------------------------------------------------------------EMPNO MGR JOB SAL ---------- ---------- --------- ---------2 JONES 7566 7839 MANAGER 2975 SQL> COLUMN ORG_CHART FORMAT A10 SQL> / ORG_CHART EMPNO MGR JOB SAL ---------- ---------- ---------- --------- ---------2 JONES 7566 7839 MANAGER 2975 SQL> cl scr SQL> ed Wrote file afiedt.buf 1 SELECT 2 LPAD(LEVEL, ((2 * LEVEL) - 1))||' '||Ename Org_Chart, 3 Empno, Dept.Deptno, Dname, Sal 4 FROM Emp, Dept 5 WHERE Sal > (SELECT MAX(Sal) 6 FROM Emp 7 WHERE LEVEL = 2 8 START WITH Job = 'PRESIDENT' 9 CONNECT BY PRIOR Empno = MGR) AND Dept.Deptno = Emp.Deptno 10 START WITH Job = 'PRESIDENT' 11* CONNECT BY NOCYCLE PRIOR Empno = MGR SQL> / ORG_CHART EMPNO DEPTNO DNAME SAL

---------- ---------- ---------- -------------- ---------1 KING 7839 10 ACCOUNTING 5000 3 FORD 7902 20 RESEARCH 3000 3 SCOT 7788 20 RESEARCH 3000 T SQL> ed Wrote file afiedt.buf 1 SELECT 2 LPAD(LEVEL, ((2 * LEVEL) - 1))||' '||Ename Org_Chart, 3 Empno, Dept.Deptno, Dname, Sal, Grade 4 FROM Emp, Dept, SalGrade 5 WHERE Sal >ANY (SELECT MAX(Sal) 6 FROM Emp 7 WHERE LEVEL = 2 8 START WITH Job = 'PRESIDENT' 9 CONNECT BY PRIOR Empno = MGR) AND Dept.Deptno = Emp.Deptno AND 10 Sal BETWEEN Losal AND HiSal 11 START WITH Job = 'PRESIDENT' 12* CONNECT BY NOCYCLE PRIOR Empno = MGR SQL> / ORG_CHART EMPNO DEPTNO DNAME SAL GRADE ---------- ---------- ---------- -------------- ---------- ---------1 KING 7839 10 ACCOUNTING 5000 5 3 FORD 7902 20 RESEARCH 3000 4 3 SCOT 7788 20 RESEARCH 3000 4 T SQL> cl scr SQL> 2 3 4 SELECT LEVEL, MAX(Sal) FROM EMP CONNECT BY PRIOR Sal > Sal GROUP BY LEVEL;

LEVEL MAX(SAL) ---------- ---------1 5000 2 3000 3 2975 4 2850 5 2450 6 1600 7 1500 8 1300 9 1250 10 1100 11 950 LEVEL MAX(SAL) ---------- ---------12 800 12 rows selected.

SQL> ed Wrote file afiedt.buf 1 2 3 4* SQL> SELECT LEVEL, MIN(Sal) FROM EMP CONNECT BY PRIOR Sal < Sal GROUP BY LEVEL /

LEVEL MIN(SAL) ---------- ---------1 800 2 950 3 1100 4 1250 5 1300 6 1500 7 1600 8 2450 9 2850 10 2975 11 3000 LEVEL MIN(SAL) ---------- ---------12 5000 12 rows selected. SQL> SELECT LEVEL, MAX(Sal) 2 FROM EMP 3 WHERE LEVEL = &LEVELNO 4 CONNECT BY PRIOR Sal > Sal 5 GROUP BY LEVEL; Enter value for levelno: 3 old 3: WHERE LEVEL = &LEVELNO new 3: WHERE LEVEL = 3 LEVEL MAX(SAL) ---------- ---------3 2975 SQL> / Enter value for levelno: 7 old 3: WHERE LEVEL = &LEVELNO new 3: WHERE LEVEL = 7 LEVEL MAX(SAL) ---------- ---------7 1500 SQL> ed Wrote file afiedt.buf 1 2 3 4 5* SQL> SELECT LEVEL, MIN(Sal) FROM EMP WHERE LEVEL = &LEVELNO CONNECT BY PRIOR Sal < Sal GROUP BY LEVEL /

Enter value for levelno: 1 old 3: WHERE LEVEL = &LEVELNO new 3: WHERE LEVEL = 1 LEVEL MIN(SAL) ---------- ---------1 800 SQL> / Enter value for levelno: 4 old 3: WHERE LEVEL = &LEVELNO new 3: WHERE LEVEL = 4 LEVEL MIN(SAL) ---------- ---------4 1250 SQL> SELECT Ename, Sal, Deptno, Job 2 FROM Emp 3 WHERE Sal = (SELECT MAX(Sal) 4 FROM EMP 5 WHERE LEVEL = &LEVELNO 6 CONNECT BY PRIOR Sal > Sal 7 GROUP BY LEVEL); Enter value for levelno: 6 old 5: WHERE LEVEL = &LEVELNO new 5: WHERE LEVEL = 6 ENAME SAL DEPTNO JOB -------------------- ---------- ---------- --------ALLEN 1600 30 SALESMAN SQL> cl scr SQL> SELECT Ename, Sal, Deptno, Job 2 FROM Emp 3 WHERE Sal = (SELECT MIN(Sal) 4 FROM EMP 5 WHERE LEVEL = &LEVELNO 6 CONNECT BY PRIOR Sal < Sal 7 GROUP BY LEVEL) 8 / Enter value for levelno: 8 old 5: WHERE LEVEL = &LEVELNO new 5: WHERE LEVEL = 8 ENAME SAL DEPTNO JOB -------------------- ---------- ---------- --------CLARK 2450 10 MANAGER SQL> cl scr SQL> SELECT LEVEL, MIN(HireDate) Senior 2 FROM EMP 3 WHERE LEVEL = &LEVELNO 4 CONNECT BY PRIOR HireDate < HireDate 5 GROUP BY LEVEL; Enter value for levelno: 5 old 3: WHERE LEVEL = &LEVELNO new 3: WHERE LEVEL = 5

LEVEL SENIOR ---------- --------5 01-MAY-81 SQL> / Enter value for levelno: 1 old 3: WHERE LEVEL = &LEVELNO new 3: WHERE LEVEL = 1 LEVEL SENIOR ---------- --------1 17-DEC-80 SQL> SELECT Ename, Sal, HireDate 2 FROm Emp 3 WHERE HireDate = (SELECT MIN(HireDate) 4 FROM EMP 5 WHERE LEVEL = &LEVELNO 6 CONNECT BY 7 PRIOR HireDate < HireDate 8 GROUP BY LEVEL); Enter value for levelno: 1 old 5: WHERE LEVEL = &LEVELNO new 5: WHERE LEVEL = 1 ENAME SAL HIREDATE -------------------- ---------- --------SMITH 800 17-DEC-80 SQL> / Enter value for levelno: 2 old 5: new 5: ENAME SAL HIREDATE -------------------- ---------- --------ALLEN 1600 20-FEB-81 SQL> / Enter value for levelno: 3 old 5: new 5: ENAME SAL HIREDATE -------------------- ---------- --------WARD 1250 22-FEB-81 SQL> cl scr SQL> COLUMN "Path" FORMAT A30 SQL> SELECT 2 Ename Employee, 3 CONNECT_BY_ROOT Ename "Manager", 4 LEVEL - 1 "Pathlen", 5 SYS_CONNECT_BY_PATH(Ename, '/') "Path" 6 FROM Emp 7 WHERE LEVEL > 1 AND Deptno = &Deptno 8 CONNECT BY PRIOR Empno = MGR; Enter value for deptno: 30

WHERE LEVEL = &LEVELNO WHERE LEVEL = 2

WHERE LEVEL = &LEVELNO WHERE LEVEL = 3

old new

7: WHERE LEVEL > 1 AND Deptno = &Deptno 7: WHERE LEVEL > 1 AND Deptno = 30 Manager Pathlen Path ---------- ---------- -----------------------------BLAKE 1 /BLAKE/MARTIN BLAKE 1 /BLAKE/ALLEN BLAKE 1 /BLAKE/JAMES BLAKE 1 /BLAKE/WARD BLAKE 1 /BLAKE/TURNER KING 1 /KING/BLAKE KING 2 /KING/BLAKE/MARTIN KING 2 /KING/BLAKE/ALLEN KING 2 /KING/BLAKE/JAMES KING 2 /KING/BLAKE/WARD KING 2 /KING/BLAKE/TURNER

EMPLOYEE ---------MARTIN ALLEN JAMES WARD TURNER BLAKE MARTIN ALLEN JAMES WARD TURNER

11 rows selected. SQL> cl scr SQL> SELECT 2 Name, 3 SUM(Sal) "Total Salary" 4 FROM ( 5 SELECT 6 CONNECT_BY_ROOT Ename AS Name, 7 Sal 8 FROM Emp 9 WHERE Deptno = &GiveDeptno 10 CONNECT BY PRIOR Empno = MGR 11 ) 12 GROUP BY Name; Enter value for givedeptno: 20 old 9: WHERE Deptno = &GiveDeptno new 9: WHERE Deptno = 20 NAME Total Salary ---------- -----------ADAMS 1100 FORD 3800 JONES 10875 KING 10875 SCOTT 4100 SMITH 800 6 rows selected. SQL> SPOOL OFF

You might also like