Moved old Queries-A6 to Queries-A7 since it's the cursor assignment.
This commit is contained in:
parent
82db5216cb
commit
cd04378e95
@ -1,91 +1,110 @@
|
|||||||
|
# Database Queries for Assignment-A7
|
||||||
|
|
||||||
## Creating tables
|
## Creating tables
|
||||||
|
|
||||||
`Library` table:
|
`O_RollCall` table:
|
||||||
```sql
|
```sql
|
||||||
CREATE TABLE Library(
|
CREATE TABLE O_RollCall(
|
||||||
id NUMBER(12),
|
name VARCHAR(255),
|
||||||
title VARCHAR(255),
|
roll NUMBER(14),
|
||||||
dateofissue DATE,
|
class VARCHAR(255)
|
||||||
author VARCHAR(255)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
`Library_Audit` table:
|
`N_RollCall` table:
|
||||||
```sql
|
```sql
|
||||||
CREATE TABLE Library_Audit(
|
CREATE TABLE N_RollCall(
|
||||||
id NUMBER(12),
|
name VARCHAR(255),
|
||||||
title VARCHAR(255),
|
roll NUMBER(14),
|
||||||
dateofaction DATE,
|
class VARCHAR(255)
|
||||||
author VARCHAR(255),
|
|
||||||
status VARCHAR(255)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Inserting values
|
## Inserting data
|
||||||
|
|
||||||
`Library` table:
|
`O_RollCall` table:
|
||||||
```sql
|
```sql
|
||||||
INSERT INTO Library VALUES (1, 'Berserk', TO_DATE('2024-07-28','YYYY-MM-DD'), 'Prashant');
|
INSERT INTO O_RollCall VALUES ('Stewie', 1, 'Comp 1');
|
||||||
INSERT INTO Library VALUES (2, 'Dark', TO_DATE('2024-07-15','YYYY-MM-DD'), 'Rajendra');
|
INSERT INTO O_RollCall VALUES ('Edie', 2, 'Comp 2');
|
||||||
INSERT INTO Library VALUES (3, 'Hannibal', TO_DATE('2024-07-20','YYYY-MM-DD'), 'Manoj');
|
INSERT INTO O_RollCall VALUES ('Stomp', 3, 'Comp 3');
|
||||||
INSERT INTO Library VALUES (4, 'AOT', TO_DATE('2024-07-30','YYYY-MM-DD'), 'Rajesh');
|
INSERT INTO O_RollCall VALUES ('Lara', 4, 'Comp 1');
|
||||||
INSERT INTO Library VALUES (5, 'GOT', TO_DATE('2024-07-19','YYYY-MM-DD'), 'Anil');
|
INSERT INTO O_RollCall VALUES ('Foxy', 5, 'Comp 2');
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Trigger
|
`N_RollCall` table:
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
CREATE OR REPLACE TRIGGER library_action
|
INSERT INTO N_RollCall VALUES ('Stewie', 1, 'Comp 1');
|
||||||
AFTER INSERT OR UPDATE OR DELETE ON Library
|
INSERT INTO N_RollCall VALUES ('Edie', 2, 'Comp 2');
|
||||||
FOR EACH ROW
|
INSERT INTO N_RollCall VALUES ('Stomp', 3, 'Comp 3');
|
||||||
|
INSERT INTO N_RollCall VALUES ('Lara', 4, 'Comp 1');
|
||||||
|
INSERT INTO N_RollCall VALUES ('Foxy', 5, 'Comp 2');
|
||||||
|
INSERT INTO N_RollCall VALUES ('Gundeti', 6, 'Comp 3');
|
||||||
|
INSERT INTO N_RollCall VALUES ('Kalas', 7, 'Comp 2');
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## Procedure
|
||||||
|
|
||||||
|
### Explicit cursor
|
||||||
|
```sql
|
||||||
|
DECLARE
|
||||||
|
p_name VARCHAR(255);
|
||||||
|
p_rollno NUMBER(15);
|
||||||
|
p_class VARCHAR(255);
|
||||||
|
CURSOR cc1 IS SELECT * FROM N_RollCall WHERE roll NOT IN (SELECT roll FROM O_RollCall);
|
||||||
BEGIN
|
BEGIN
|
||||||
IF INSERTING THEN
|
OPEN cc1;
|
||||||
INSERT INTO Library_Audit (id, title, dateofaction, author, status) VALUES (:NEW.id, :NEW.title, current_timestamp, :NEW.author, 'Insert');
|
LOOP
|
||||||
ELSIF UPDATING THEN
|
FETCH cc1 INTO p_name, p_rollno, p_class;
|
||||||
INSERT INTO Library_Audit (id, title, dateofaction, author, status) VALUES (:OLD.id, :OLD.title, current_timestamp, :OLD.author, 'Update');
|
INSERT INTO O_RollCall VALUES (p_name, p_rollno, p_class);
|
||||||
ELSIF DELETING THEN
|
EXIT WHEN cc1%notfound;
|
||||||
INSERT INTO Library_Audit (id, title, dateofaction, author, status) VALUES (:OLD.id, :OLD.title, current_timestamp, :OLD.author, 'Delete');
|
DBMS_OUTPUT.PUT_LINE(p_name || ' ' || p_rollno || ' ' || p_class);
|
||||||
END IF;
|
END LOOP;
|
||||||
|
CLOSE cc1;
|
||||||
END;
|
END;
|
||||||
/
|
/
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Testing trigger
|
### Parameterized cursor
|
||||||
|
|
||||||
### Insert operation
|
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
INSERT INTO Library VALUES (15, 'CREW', TO_DATE('2024-07-22','YYYY-MM-DD'), 'Ramesh');
|
DECLARE
|
||||||
INSERT INTO Library VALUES (14, 'Ninteen Eighty Four', TO_DATE('2024-07-01','YYYY-MM-DD'), 'Omkar');
|
p_name VARCHAR(255);
|
||||||
|
p_rollno NUMBER(15);
|
||||||
|
p_class VARCHAR(255);
|
||||||
|
CURSOR pp1(roll1 NUMBER) IS SELECT * FROM N_RollCall WHERE roll > roll1;
|
||||||
|
|
||||||
SELECT * FROM Library;
|
BEGIN
|
||||||
SELECT * FROM Library_Audit;
|
OPEN pp1(3);
|
||||||
|
LOOP
|
||||||
|
FETCH pp1 INTO p_name, p_rollno, p_class;
|
||||||
|
EXIT WHEN pp1%notfound;
|
||||||
|
DBMS_OUTPUT.PUT_LINE(p_name || ' ' || p_rollno || ' ' || p_class);
|
||||||
|
END LOOP;
|
||||||
|
CLOSE pp1;
|
||||||
|
|
||||||
```
|
END;
|
||||||
### Update operation
|
/
|
||||||
|
|
||||||
```sql
|
|
||||||
UPDATE Library SET id = 6, title = 'Sherlock', author = 'Deepak' where id = 3;
|
|
||||||
UPDATE Library SET id = 7, title = 'MR. ROBOT', author = 'Varad' where id = 4;
|
|
||||||
|
|
||||||
SELECT * FROM Library;
|
|
||||||
SELECT * FROM Library_Audit;
|
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Delete operation
|
### Implicit Cursor
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
DELETE FROM Library WHERE id = 1;
|
DECLARE
|
||||||
DELETE FROM Library WHERE id = 5;
|
total_rows NUMBER(2);
|
||||||
|
|
||||||
SELECT * FROM Library;
|
BEGIN
|
||||||
SELECT * FROM Library_Audit;
|
UPDATE N_RollCall SET roll = roll + 1;
|
||||||
|
IF sql%notfound THEN
|
||||||
|
dbms_output.put_line('no roll was updated');
|
||||||
|
ELSIF sql%found THEN
|
||||||
|
total_rows := sql%rowcount;
|
||||||
|
DBMS_OUTPUT.PUT_LINE( total_rows || ' roll calls were affected ');
|
||||||
|
END IF;
|
||||||
|
END;
|
||||||
|
/
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
|
||||||
|
Loading…
Reference in New Issue
Block a user