Mega Code Archive

 
Categories / Oracle PLSQL Tutorial / Query Select
 

Pseudocolumn LEVEL and an example of using the levels

SQL> SQL> CREATE TABLE book (   2    isbn      VARCHAR2(10) PRIMARY KEY,   3    parent_isbn VARCHAR2(10),   4    series    VARCHAR2(20),   5    category  VARCHAR2(20),   6    title     VARCHAR2(100),   7    num_pages NUMBER,   8    price     NUMBER,   9    copyright NUMBER(4)); Table created. SQL> SQL> INSERT INTO book (isbn, parent_isbn, series, category, title, num_pages, price, copyright)   2    VALUES ('1', '2', 'Oracle', 'Oracle Server', 'SQL', 664, 49.99, 2002); 1 row created. SQL> SQL> INSERT INTO book (isbn, parent_isbn, series, category, title, num_pages, price, copyright)   2    VALUES ('2', null, 'Oracle', 'Oracle Server', 'Java', 772, 49.99, 2000); 1 row created. SQL> SQL> INSERT INTO book (isbn, parent_isbn, series, category, title, num_pages, price, copyright)   2    VALUES ('3', '1', 'Oracle', 'Oracle Server', 'XML', 1008, 54.99, 2004); 1 row created. SQL> SQL> SET SERVEROUTPUT ON SQL> SQL> DECLARE   2     v_level PLS_INTEGER;   3     v_title book.TITLE%TYPE;   4     CURSOR cur_tree IS SELECT isbn, title, series FROM book;   5  BEGIN   6  FOR l IN cur_tree   7  LOOP   8      SELECT max(LEVEL) INTO v_level FROM book   9      START WITH isbn = l.isbn  10      CONNECT BY PRIOR parent_isbn = isbn;  11  12      DBMS_OUTPUT.PUT_LINE(l.title||' is book '||v_level||' in the '||l.series||' series');  13  14  END LOOP;  15  CLOSE cur_tree;  16  EXCEPTION  17     WHEN OTHERS  18     THEN  19        DBMS_OUTPUT.PUT_LINE(sqlerrm);  20  END;  21  / SQL is book 2 in the Oracle series Java is book 1 in the Oracle series XML is book 3 in the Oracle series ORA-01001: invalid cursor PL/SQL procedure successfully completed. SQL> SQL> drop table book; Table dropped.