Cursor Variable Example 2 : Cursor Value « Cursor « Oracle PL / SQL

Oracle PL / SQL
1. Aggregate Functions
2. Analytical Functions
3. Char Functions
4. Constraints
5. Conversion Functions
6. Cursor
7. Data Type
8. Date Timezone
9. Hierarchical Query
10. Index
11. Insert Delete Update
12. Large Objects
13. Numeric Math Functions
14. Object Oriented Database
15. PL SQL
16. Regular Expressions
17. Report Column Page
18. Result Set
19. Select Query
20. Sequence
21. SQL Plus
22. Stored Procedure Function
23. Subquery
24. System Packages
25. System Tables Views
26. Table
27. Table Joins
28. Trigger
29. User Previliege
30. View
31. XML
Java
Java Tutorial
Java Source Code / Java Documentation
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Oracle PL / SQL » Cursor » Cursor Value 
Cursor Variable Example 2
    

SQL>
SQL> CREATE TABLE place (
  2    room_id          NUMBER(5PRIMARY KEY,
  3    building         VARCHAR2(15),
  4    room_number      NUMBER(4),
  5    number_seats     NUMBER(4),
  6    description      VARCHAR2(50)
  7    );

Table created.

SQL>
SQL> INSERT INTO place (room_id, building, room_number, number_seats, description)
  2             VALUES (20001'Building 7', 2011000'Large Lecture Hall');

row created.

SQL>
SQL> INSERT INTO place (room_id, building, room_number, number_seats, description)
  2             VALUES (20002'Building 6', 101500'Small Lecture Hall');

row created.

SQL>
SQL> INSERT INTO place (room_id, building, room_number, number_seats, description)
  2             VALUES (20003'Building 6', 15050'Discussion Room A');

row created.

SQL>
SQL> INSERT INTO place (room_id, building, room_number, number_seats, description)
  2             VALUES (20004'Building 6', 16050'Discussion Room B');

row created.

SQL>
SQL> INSERT INTO place (room_id, building, room_number, number_seats,description)
  2             VALUES (20005'Building 6', 17050'Discussion Room C');

row created.

SQL>
SQL> INSERT INTO place (room_id, building, room_number, number_seats, description)
  2             VALUES (20006'Music Building', 10010'Music Practice Room');

row created.

SQL>
SQL> INSERT INTO place (room_id, building, room_number, number_seats, description)
  2             VALUES (20007'Music Building', 2001000'Concert Room');

row created.

SQL>
SQL> INSERT INTO place (room_id, building, room_number, number_seats, description)
  2             VALUES (20008'Building 7', 30075'Discussion Room D');

row created.

SQL>
SQL> INSERT INTO place (room_id, building, room_number, number_seats,description)
  2             VALUES (20009'Building 7', 31050'Discussion Room E');

row created.

SQL>
SQL>
SQL> CREATE TABLE session (
  2    department       CHAR(3),
  3    course           NUMBER(3),
  4    description      VARCHAR2(2000),
  5    max_lecturer     NUMBER(3),
  6    current_lecturer NUMBER(3),
  7    num_credits      NUMBER(1),
  8    room_id          NUMBER(5)
  9    );

Table created.

SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)
  2              VALUES ('HIS', 101'History 101', 3011420000);

row created.

SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)
  2              VALUES ('HIS', 301'History 301', 300420004);

row created.

SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)
  2              VALUES ('CS', 101'Computer Science 101', 500420001);

row created.

SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)
  2              VALUES ('ECN', 203'Economics 203', 150320002);

row created.

SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)
  2              VALUES ('CS', 102'Computer Science 102', 353420003);

row created.

SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)
  2              VALUES ('MUS', 410'Music 410', 54320005);

row created.

SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)
  2              VALUES ('ECN', 101'Economics 101', 500420007);

row created.

SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)
  2              VALUES ('NUT', 307'Nutrition 307', 202420008);

row created.

SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)
  2              VALUES ('MUS', 100'Music 100', 10003, NULL);

row created.

SQL>
SQL>
SQL> CREATE TABLE MyTable (
  2    num_col    NUMBER,
  3    char_col   VARCHAR2(60)
  4    );

Table created.

SQL>
SQL>
SQL> CREATE OR REPLACE PROCEDURE ShowCursorVariable
  2    (p_Table IN VARCHAR2AS
  3
  4    TYPE myRoomType IS REF CURSOR;
  5
  6    cursorValue myRoomType;
  7
  8    v_Department  session.department%TYPE;
  9    v_Course      session.course%TYPE;
 10    v_RoomID      place.room_id%TYPE;
 11    v_Description place.description%TYPE;
 12  BEGIN
 13    IF p_Table = 'session' THEN
 14      OPEN cursorValue FOR
 15        SELECT department, course
 16          FROM session;
 17    ELSIF p_table = 'place' THEN
 18      OPEN cursorValue FOR
 19        SELECT room_id, description
 20          FROM place;
 21    ELSE
 22      RAISE_APPLICATION_ERROR(-20000,
 23        'Input must be ''session'' or ''place''');
 24    END IF;
 25
 26    LOOP
 27      IF p_Table = 'session' THEN
 28        FETCH cursorValue INTO
 29          v_Department, v_Course;
 30        EXIT WHEN cursorValue%NOTFOUND;
 31
 32        INSERT INTO MyTable (num_col, char_col)
 33          VALUES (v_Course, v_Department);
 34      ELSE
 35        FETCH cursorValue INTO
 36          v_RoomID, v_Description;
 37        EXIT WHEN cursorValue%NOTFOUND;
 38
 39        INSERT INTO MyTable (num_col, char_col)
 40          VALUES (v_RoomID, SUBSTR(v_Description, 160));
 41      END IF;
 42    END LOOP;
 43
 44    CLOSE cursorValue;
 45
 46    COMMIT;
 47  END ShowCursorVariable;
 48  /

Procedure created.

SQL>
SQL> show error
No errors.
SQL>
SQL> select from MyTable;

no rows selected

SQL>
SQL> drop table session;

Table dropped.

SQL>
SQL> drop table place;

Table dropped.

SQL>
SQL>

   
    
    
  
Related examples in the same category
1. Cursor with a single value
2. Update statement with cursor variable
3. Server-side cursor variables.
4. A cursor FOR loop.
5. Read full table data from a cursor
6. Single column cursor
7. Use Complex cursor to simplify the pl/sql logic
8. Use cursor to do full table scan
9. Use data referenced by cursor to update table
10. Use number functions when creating a cursor value
11. Form sentences from database data
12. Two identical queries to demonstrate the impact of changes
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.