PL SQL Oracle PLSQL

SQL>
SQL> CREATE TABLE place (
  2    room_id          NUMBER(5) PRIMARY 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', 201, 1000, 'Large Lecture Hall');
1 row created.
SQL>
SQL> INSERT INTO place (room_id, building, room_number, number_seats, description)
  2             VALUES (20002, 'Building 6', 101, 500, 'Small Lecture Hall');
1 row created.
SQL>
SQL> INSERT INTO place (room_id, building, room_number, number_seats, description)
  2             VALUES (20003, 'Building 6', 150, 50, 'Discussion Room A');
1 row created.
SQL>
SQL> INSERT INTO place (room_id, building, room_number, number_seats, description)
  2             VALUES (20004, 'Building 6', 160, 50, 'Discussion Room B');
1 row created.
SQL>
SQL> INSERT INTO place (room_id, building, room_number, number_seats,description)
  2             VALUES (20005, 'Building 6', 170, 50, 'Discussion Room C');
1 row created.
SQL>
SQL> INSERT INTO place (room_id, building, room_number, number_seats, description)
  2             VALUES (20006, 'Music Building', 100, 10, 'Music Practice Room');
1 row created.
SQL>
SQL> INSERT INTO place (room_id, building, room_number, number_seats, description)
  2             VALUES (20007, 'Music Building', 200, 1000, 'Concert Room');
1 row created.
SQL>
SQL> INSERT INTO place (room_id, building, room_number, number_seats, description)
  2             VALUES (20008, 'Building 7', 300, 75, 'Discussion Room D');
1 row created.
SQL>
SQL> INSERT INTO place (room_id, building, room_number, number_seats,description)
  2             VALUES (20009, 'Building 7', 310, 50, 'Discussion Room E');
1 row created.
SQL>
SQL>
SQL> CREATE TABLE lecturer (
  2    id               NUMBER(5) PRIMARY KEY,
  3    first_name       VARCHAR2(20),
  4    last_name        VARCHAR2(20),
  5    major            VARCHAR2(30),
  6    current_credits  NUMBER(3)
  7    );
Table created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
  2                VALUES (10001, 'Scott', 'Lawson','Computer Science', 11);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major, current_credits)
  2                VALUES (10002, 'Mar', 'Wells','History', 4);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
  2                VALUES (10003, 'Jone', 'Bliss','Computer Science', 8);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
  2                VALUES (10004, 'Man', 'Kyte','Economics', 8);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
  2                VALUES (10005, 'Pat', 'Poll','History', 4);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
  2                VALUES (10006, 'Tim', 'Viper','History', 4);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
  2                VALUES (10007, 'Barbara', 'Blues','Economics', 7);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
  2                VALUES (10008, 'David', 'Large','Music', 4);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
  2                VALUES (10009, 'Chris', 'Elegant','Nutrition', 8);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
  2                VALUES (10010, 'Rose', 'Bond','Music', 7);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
  2                VALUES (10011, 'Rita', 'Johnson','Nutrition', 8);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
  2                VALUES (10012, 'Sharon', 'Clear','Computer Science', 3);
1 row created.
SQL>
SQL>
SQL> CREATE OR REPLACE PROCEDURE printLecturer
  2    (v_Numlecturer IN OUT NUMBER) AS
  3    v_LocalCount NUMBER := 0;
  4    myLecturerName VARCHAR2(100);
  5    CURSOR c_StudentNames IS
  6      SELECT first_name || ' ' || last_name
  7        FROM lecturer
  8        ORDER BY ID;
  9  BEGIN
 10    OPEN c_StudentNames;
 11    FOR v_Count IN 1..v_Numlecturer LOOP
 12      FETCH c_StudentNames INTO myLecturerName;
 13      IF c_StudentNames%NOTFOUND THEN
 14        EXIT;
 15      END IF;
 16
 17      DBMS_OUTPUT.PUT_LINE('  ' || myLecturername);
 18      v_LocalCount := v_LocalCount + 1;
 19    END LOOP;
 20
 21    CLOSE c_StudentNames;
 22    v_Numlecturer := v_LocalCount;
 23  END printLecturer;
 24  /
Procedure created.
SQL>
SQL> DECLARE
  2    codeBlock VARCHAR2(1000);
  3
  4    v_Building place.building%TYPE;
  5    v_RoomNum  place.room_number%TYPE;
  6    v_RoomID   place.room_ID%TYPE := 20006;
  7    v_Numlecturer NUMBER;
  8  BEGIN
  9    EXECUTE IMMEDIATE
 10      'DELETE FROM place WHERE room_id = :ID RETURNING building, room_number INTO :building, :room_num'
 11      USING v_RoomID, OUT v_Building, OUT v_RoomNum;
 12
 13    DBMS_OUTPUT.PUT_LINE('Deleted Room ' || v_RoomNum || ' in ' || v_Building);
 14
 15    codeBlock := 'BEGIN printLecturer(:num); END;';
 16
 17    v_Numlecturer := 4;
 18    EXECUTE IMMEDIATE codeBlock USING IN OUT v_Numlecturer;
 19    DBMS_OUTPUT.PUT_LINE('Returned value is ' || v_Numlecturer);
 20
 21    v_Numlecturer := 20;
 22    EXECUTE IMMEDIATE codeBlock USING IN OUT v_Numlecturer;
 23    DBMS_OUTPUT.PUT_LINE('Returned value is ' || v_Numlecturer);
 24  END;
 25  /
Deleted Room 100 in Music Building
  Scott Lawson
  Mar Wells
  Jone Bliss
  Man Kyte
Returned value is 4
  Scott Lawson
  Mar Wells
  Jone Bliss
  Man Kyte
  Pat Poll
  Tim Viper
  Barbara Blues
  David Large
  Chris Elegant
  Rose Bond
  Rita Johnson
  Sharon Clear
Returned value is 12
PL/SQL procedure successfully completed.
SQL>
SQL> drop table lecturer;
Table dropped.
SQL>
SQL> drop table place;
Table dropped.
SQL>
SQL>