diff --git a/Practical/Assignment-A6/Queries-A6.md b/Practical/Assignment-A6/Queries-A6.md new file mode 100644 index 0000000..a8fabd6 --- /dev/null +++ b/Practical/Assignment-A6/Queries-A6.md @@ -0,0 +1,108 @@ +## Creating tables + +`O_RollCall` table: +```sql +CREATE TABLE O_RollCall( +name VARCHAR(255), +roll NUMBER(14), +class VARCHAR(255) +); + +``` + +`N_RollCall` table: +```sql +CREATE TABLE N_RollCall( +name VARCHAR(255), +roll NUMBER(14), +class VARCHAR(255) +); + +``` + +## Inserting data + +`O_RollCall` table: +```sql +INSERT INTO O_RollCall VALUES ('Stewie', 1, 'Comp 1'); +INSERT INTO O_RollCall VALUES ('Edie', 2, 'Comp 2'); +INSERT INTO O_RollCall VALUES ('Stomp', 3, 'Comp 3'); +INSERT INTO O_RollCall VALUES ('Lara', 4, 'Comp 1'); +INSERT INTO O_RollCall VALUES ('Foxy', 5, 'Comp 2'); + +``` + +`N_RollCall` table: +```sql +INSERT INTO N_RollCall VALUES ('Stewie', 1, 'Comp 1'); +INSERT INTO N_RollCall VALUES ('Edie', 2, 'Comp 2'); +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 + OPEN cc1; + LOOP + FETCH cc1 INTO p_name, p_rollno, p_class; + INSERT INTO O_RollCall VALUES (p_name, p_rollno, p_class); + EXIT WHEN cc1%notfound; + DBMS_OUTPUT.PUT_LINE(p_name || ' ' || p_rollno || ' ' || p_class); + END LOOP; + CLOSE cc1; +END; +/ + +``` + +### Parameterized cursor +```sql +DECLARE + p_name VARCHAR(255); + p_rollno NUMBER(15); + p_class VARCHAR(255); + CURSOR pp1(roll1 NUMBER) IS SELECT * FROM N_RollCall WHERE roll > roll1; + +BEGIN + 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; +/ + +``` + +### Implicit Cursor +```sql +DECLARE + total_rows NUMBER(2); + +BEGIN + 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; +/ + +``` diff --git a/Practical/Assignment-A6/Softcopy-A6.pdf b/Practical/Assignment-A6/Softcopy-A6.pdf new file mode 100644 index 0000000..85a5aa2 Binary files /dev/null and b/Practical/Assignment-A6/Softcopy-A6.pdf differ