0% found this document useful (0 votes)
48 views

WEEK-12 Cursor With Parameter: Create

The document describes creating tables to store employee and lecturer data in an Oracle database. It inserts sample data into the tables and demonstrates using a cursor with the FOR UPDATE clause to update records in a transaction. A cursor is declared to select records from the lecturer table for updating. The cursor loops through the records and checks if the current credits are less than 3, and if so, updates the credits by multiplying by 1.2.

Uploaded by

DeepthiReddy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
48 views

WEEK-12 Cursor With Parameter: Create

The document describes creating tables to store employee and lecturer data in an Oracle database. It inserts sample data into the tables and demonstrates using a cursor with the FOR UPDATE clause to update records in a transaction. A cursor is declared to select records from the lecturer table for updating. The cursor loops through the records and checks if the current credits are less than 3, and if so, updates the credits by multiplying by 1.2.

Uploaded by

DeepthiReddy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 20

WEEK-12

Cursor with parameter


SQL>
SQL>
SQL>
SQL>
SQL>
2
3
4
5
6
7
8
9
10

set serveroutput on
CREATE TABLE employees
( employee_id
last_name
email
hire_date
job_id
department_id
salary
manager_id
);

number(10)
varchar2(50)
varchar2(30),
date,
varchar2(30),
number(10),
number(6),
number(6)

not null,
not null,

Table created.
SQL>
SQL>
SQL> insert into employees( employee_id, last_name, email, hire_date, job_id,
salary,department_id ,manager_id)
2
values ( 1001, 'Lawson', '[email protected]', '01-JAN2002','MGR', 30000,1 ,1004);
1 row created.
SQL>
SQL> insert into employees( employee_id, last_name, email, hire_date, job_id,
salary, department_id ,manager_id)
2
values ( 1002, 'Wells', '[email protected]', '01-JAN-2002', 'D
BA', 20000,2, 1005 );
1 row created.
SQL>
SQL> insert into employees( employee_id, last_name, email, hire_date, job_id,
salary, department_id ,manager_id)
2
values( 1003, 'Bliss', '[email protected]', '01-JAN-2002', 'P
ROG', 24000,3 ,1004);
1 row created.
SQL>
SQL> insert into employees( employee_id, last_name, email, hire_date, job_id,
salary, department_id, manager_id)

2
values( 1004,
GR',25000 ,4, 1005);

'Kyte', '[email protected]', SYSDATE-3650, 'M

1 row created.
SQL>
SQL> insert into employees( employee_id, last_name, email, hire_date, job_id,
salary, department_id, manager_id)
2
values( 1005, 'Viper', 'sdillon@a .com', SYSDATE, 'PROG',
20000, 1, 1006);
1 row created.
SQL>
SQL> insert into employees( employee_id, last_name, email, hire_date, job_id,
salary, department_id,manager_id)
2
values( 1006, 'Beck', '[email protected]', SYSDATE, 'PROG', 200
00, 2, null);
1 row created.
SQL>
SQL> insert into employees( employee_id, last_name, email, hire_date, job_id,
salary, department_id, manager_id)
2
values( 1007, 'Java', '[email protected]', SYSDATE, 'PROG', 200
00, 3, 1006);
1 row created.
SQL>
SQL> insert into employees( employee_id, last_name, email, hire_date, job_id,
salary, department_id, manager_id)
2
values( 1008, 'Oracle', '[email protected]', SYSDATE, 'DBA', 2
0000, 4, 1006);
1 row created.
SQL>
SQL>
SQL> declare
2
cursor cursorValue (p_deptid in number)
3
is select *
4
from employees
5
where department_id = p_deptid;
6
7
l_emp employees%rowtype;
8 begin
9
open cursorValue(30);
10
loop

11
fetch cursorValue into l_emp;
12
exit when cursorValue%notfound;
13
dbms_output.put('Employee id ' || l_emp.employee_id || ' is ');
14
dbms_output.put_line(l_emp.last_name);
15
end loop;
16
close cursorValue;
17
18
dbms_output.put_line('Getting employees for department 90');
19
open cursorValue(90);
20
loop
21
fetch cursorValue into l_emp;
22
exit when cursorValue%notfound;
23
dbms_output.put('Employee id ' || l_emp.employee_id || ' is ');
24
dbms_output.put_line(l_emp.last_name);
25
end loop;
26
close cursorValue;
27 end;
28 /
Getting employees for department 90
PL/SQL procedure successfully completed.
SQL>
SQL> drop table employees;
Table dropped.
SQL> --

In the UPDATE statement, you use the WHERE CURRENT OF option to


identify the record to be updated

SQL>
SQL>
2
3
4
5
6
7
8
9
10
11

-- create demo table


create table Employee(
ID
VARCHAR2(4 BYTE)
First_Name
VARCHAR2(10 BYTE),
Last_Name
VARCHAR2(10 BYTE),
Start_Date
DATE,
End_Date
DATE,
Salary
Number(8,2),
City
VARCHAR2(10 BYTE),
Description
VARCHAR2(15 BYTE)
)
/

Table created.

NOT NULL,

SQL>
SQL> -- prepare data
SQL> insert into Employee(ID, First_Name, Last_Name, Start_Date,
End_Date,
Salary, City,
Description)
2
values ('01','Jason',
'Martin', to_date('19960725','YYYY
MMDD'), to_date('20060725','YYYYMMDD'), 1234.56, 'Toronto', 'Programmer')
3 /
1 row created.
SQL> insert into Employee(ID, First_Name, Last_Name, Start_Date,
End_Date,
Salary, City,
Description)
2
values('02','Alison',
'Mathews', to_date('19760321','YYYY
MMDD'), to_date('19860221','YYYYMMDD'), 6661.78, 'Vancouver','Tester')
3 /
1 row created.
SQL> insert into Employee(ID, First_Name, Last_Name, Start_Date,
End_Date,
Salary, City,
Description)
2
values('03','James',
'Smith',
to_date('19781212','YYYY
MMDD'), to_date('19900315','YYYYMMDD'), 6544.78, 'Vancouver','Tester')
3 /
1 row created.
SQL> insert into Employee(ID, First_Name, Last_Name, Start_Date,
End_Date,
Salary, City,
Description)
2
values('04','Celia',
'Rice',
to_date('19821024','YYYY
MMDD'), to_date('19990421','YYYYMMDD'), 2344.78, 'Vancouver','Manager')
3 /
1 row created.
SQL> insert into Employee(ID, First_Name, Last_Name, Start_Date,
End_Date,
Salary, City,
Description)
2
values('05','Robert',
'Black',
to_date('19840115','YYYY
MMDD'), to_date('19980808','YYYYMMDD'), 2334.78, 'Vancouver','Tester')
3 /
1 row created.
SQL> insert into Employee(ID, First_Name, Last_Name, Start_Date,
End_Date,
Salary, City,
Description)
2
values('06','Linda',
'Green',
to_date('19870730','YYYY
MMDD'), to_date('19960104','YYYYMMDD'), 4322.78,'New York', 'Tester')
3 /
1 row created.

SQL> insert into Employee(ID, First_Name, Last_Name, Start_Date,


End_Date,
Salary, City,
Description)
2
values('07','David',
'Larry',
to_date('19901231','YYYY
MMDD'), to_date('19980212','YYYYMMDD'), 7897.78,'New York', 'Manager')
3 /
1 row created.
SQL> insert into Employee(ID, First_Name, Last_Name, Start_Date,
End_Date,
Salary, City,
Description)
2
values('08','James',
'Cat',
to_date('19960917','YYYY
MMDD'), to_date('20020415','YYYYMMDD'), 1232.78,'Vancouver', 'Tester')
3 /
1 row created.
SQL>
SQL>
SQL>
SQL> -- display data in the table
SQL> select * from Employee
2 /
ID
FIRST_NAME
ON
---- --------------01
Jason
r
02
Alison
03
James
04
Celia
05
Robert
06
Linda
07
David
08
James

LAST_NAME

START_DAT END_DATE

SALARY CITY

DESCRIPTI

---------- --------- --------- ---------- ---------- --------Martin

25-JUL-96 25-JUL-06

1234.56 Toronto

Programme

Mathews
Smith
Rice
Black
Green
Larry
Cat

21-MAR-76
12-DEC-78
24-OCT-82
15-JAN-84
30-JUL-87
31-DEC-90
17-SEP-96

6661.78
6544.78
2344.78
2334.78
4322.78
7897.78
1232.78

Tester
Tester
Manager
Tester
Tester
Manager
Tester

21-FEB-86
15-MAR-90
21-APR-99
08-AUG-98
04-JAN-96
12-FEB-98
15-APR-02

Vancouver
Vancouver
Vancouver
Vancouver
New York
New York
Vancouver

8 rows selected.
SQL>
SQL>
SQL> -- In the UPDATE statement, you use the WHERE CURRENT OF option to identi
fy the record to be updated.
SQL>
SQL> DECLARE
2
3
CURSOR myCursor
4
IS SELECT ID, first_name, last_name

5
FROM employee FOR UPDATE of salary NOWAIT;
6
7
mySalary employee.salary%TYPE;
8 BEGIN
9
10
FOR employee_record IN myCursor LOOP
11
SELECT salary INTO mySalary FROM employee where id = employee_rec
ord.ID;
12
13
IF mySalary < 3000 THEN
14
UPDATE employee SET salary = salary * 1.2 WHERE CURRENT OF
myCursor;
15
DBMS_OUTPUT.PUT_LINE('Updated');
16
END IF;
17
END LOOP;
18 END;
19 /
Updated
Updated
Updated
Updated
PL/SQL procedure successfully completed.
SQL>
SQL>
SQL>
SQL>
SQL> -- clean the table
SQL> drop table Employee
2 /
Table dropped.
SQL>
SQL>

A cursor with a FOR UPDATE clause

SQL>
SQL> CREATE TABLE lecturer (
2
id
NUMBER(5) PRIMARY KEY,
3
first_name
VARCHAR2(20),
4
last_name
VARCHAR2(20),

5
6
7

major
current_credits
);

VARCHAR2(30),
NUMBER(3)

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 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, curren
t_lecturer, num_credits, room_id)
2
VALUES ('HIS', 101, 'History 101', 30, 11, 4, 20000);
1 row created.

SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, curren
t_lecturer, num_credits, room_id)
2
VALUES ('HIS', 301, 'History 301', 30, 0, 4, 20004);
1 row created.
SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, curren
t_lecturer, num_credits, room_id)
2
VALUES ('CS', 101, 'Computer Science 101', 50, 0, 4, 20001);
1 row created.
SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, curren
t_lecturer, num_credits, room_id)
2
VALUES ('ECN', 203, 'Economics 203', 15, 0, 3, 20002);
1 row created.
SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, curren
t_lecturer, num_credits, room_id)
2
VALUES ('CS', 102, 'Computer Science 102', 35, 3, 4, 20003);
1 row created.
SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, curren
t_lecturer, num_credits, room_id)
2
VALUES ('MUS', 410, 'Music 410', 5, 4, 3, 20005);
1 row created.
SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, curren
t_lecturer, num_credits, room_id)
2
VALUES ('ECN', 101, 'Economics 101', 50, 0, 4, 20007);
1 row created.
SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, curren
t_lecturer, num_credits, room_id)
2
VALUES ('NUT', 307, 'Nutrition 307', 20, 2, 4, 20008);
1 row created.

SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, curren
t_lecturer, num_credits, room_id)
2
VALUES ('MUS', 100, 'Music 100', 100, 0, 3, NULL);
1 row created.
SQL>
SQL> CREATE TABLE
2
student_id
3
department
4
course
5
grade
6
);

myStudent
NUMBER(5)
CHAR(3)
NUMBER(3)
CHAR(1)

(
NOT NULL,
NOT NULL,
NOT NULL,

Table created.
SQL>
SQL>
SQL>
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10000, 'CS', 102, 'A');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10002, 'CS', 102, 'B');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10003, 'CS', 102, 'C');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10000, 'HIS', 101, 'A');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10001, 'HIS', 101, 'B');

1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10002, 'HIS', 101, 'B');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10003, 'HIS', 101, 'A');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10004, 'HIS', 101, 'C');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10005, 'HIS', 101, 'C');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10006, 'HIS', 101, 'E');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10007, 'HIS', 101, 'B');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10008, 'HIS', 101, 'A');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10009, 'HIS', 101, 'D');
1 row created.

SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10010, 'HIS', 101, 'A');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10008, 'NUT', 307, 'A');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10010, 'NUT', 307, 'A');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10009, 'MUS', 410, 'B');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10006, 'MUS', 410, 'E');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10011, 'MUS', 410, 'B');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10000, 'MUS', 410, 'B');
1 row created.
SQL>
SQL> DECLARE
2
v_NumCredits session.num_credits%TYPE;
3
4
CURSOR cursorValue IS
5
SELECT *

6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

FROM lecturer
WHERE id IN (SELECT student_id
FROM myStudent
WHERE department= 'HIS'
AND course = 101)
FOR UPDATE OF current_credits;
BEGIN
FOR v_StudentInfo IN cursorValue LOOP
SELECT num_credits
INTO v_NumCredits
FROM session
WHERE department = 'HIS'
AND course = 101;
UPDATE lecturer
SET current_credits = current_credits + v_NumCredits
WHERE CURRENT OF cursorValue;
END LOOP;
COMMIT;
END;
/

PL/SQL procedure successfully completed.


SQL>
SQL> drop table session;
Table dropped.
SQL>
SQL> drop table myStudent;
Table dropped.
SQL>
SQL> drop table lecturer;
Table dropped.
SQL>

Using WHERE CURRENT OF


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> 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, curren
t_lecturer, num_credits, room_id)
2
VALUES ('HIS', 101, 'History 101', 30, 11, 4, 20000);
1 row created.
SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, curren
t_lecturer, num_credits, room_id)
2
VALUES ('HIS', 301, 'History 301', 30, 0, 4, 20004);
1 row created.
SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, curren
t_lecturer, num_credits, room_id)
2
VALUES ('CS', 101, 'Computer Science 101', 50, 0, 4, 20001);
1 row created.
SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, curren
t_lecturer, num_credits, room_id)
2
VALUES ('ECN', 203, 'Economics 203', 15, 0, 3, 20002);
1 row created.
SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, curren
t_lecturer, num_credits, room_id)
2
VALUES ('CS', 102, 'Computer Science 102', 35, 3, 4, 20003);
1 row created.
SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, curren
t_lecturer, num_credits, room_id)
2
VALUES ('MUS', 410, 'Music 410', 5, 4, 3, 20005);
1 row created.
SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, curren
t_lecturer, num_credits, room_id)
2
VALUES ('ECN', 101, 'Economics 101', 50, 0, 4, 20007);

1 row created.
SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, curren
t_lecturer, num_credits, room_id)
2
VALUES ('NUT', 307, 'Nutrition 307', 20, 2, 4, 20008);
1 row created.
SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, curren
t_lecturer, num_credits, room_id)
2
VALUES ('MUS', 100, 'Music 100', 100, 0, 3, NULL);
1 row created.
SQL>
SQL> CREATE TABLE
2
student_id
3
department
4
course
5
grade
6
);

myStudent
NUMBER(5)
CHAR(3)
NUMBER(3)
CHAR(1)

(
NOT NULL,
NOT NULL,
NOT NULL,

Table created.
SQL>
SQL>
SQL>
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10000, 'CS', 102, 'A');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10002, 'CS', 102, 'B');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10003, 'CS', 102, 'C');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)

VALUES (10000, 'HIS', 101, 'A');

1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10001, 'HIS', 101, 'B');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10002, 'HIS', 101, 'B');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10003, 'HIS', 101, 'A');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10004, 'HIS', 101, 'C');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10005, 'HIS', 101, 'C');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10006, 'HIS', 101, 'E');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10007, 'HIS', 101, 'B');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10008, 'HIS', 101, 'A');

1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10009, 'HIS', 101, 'D');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10010, 'HIS', 101, 'A');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10008, 'NUT', 307, 'A');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10010, 'NUT', 307, 'A');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10009, 'MUS', 410, 'B');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10006, 'MUS', 410, 'E');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10011, 'MUS', 410, 'B');
1 row created.
SQL>
SQL> INSERT INTO myStudent (student_id, department, course, grade)
2
VALUES (10000, 'MUS', 410, 'B');

1 row created.
SQL>
SQL>
SQL>
SQL>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

DECLARE
v_NumCredits

session.num_credits%TYPE;

CURSOR cursorValue IS
SELECT *
FROM lecturer
WHERE id IN (SELECT student_id
FROM myStudent
WHERE department= 'HIS'
AND course = 101)
FOR UPDATE OF current_credits;
BEGIN
FOR v_StudentInfo IN cursorValue LOOP
SELECT num_credits
INTO v_NumCredits
FROM session
WHERE department = 'HIS'
AND course = 101;
UPDATE lecturer
SET current_credits = current_credits + v_NumCredits
WHERE CURRENT OF cursorValue;
END LOOP;
COMMIT;
END;
/

PL/SQL procedure successfully completed.


SQL>
SQL>
SQL> drop table lecturer;
Table dropped.
SQL> drop table session;
Table dropped.
SQL>
SQL> drop table myStudent;
Table dropped.

You might also like