Rohit (Procedure)

You might also like

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 4

-- 1ST CITIZEN_MASTER TABLE;

CREATE TABLE CITIZEN_MASTER


(
CITIZEN_ID NUMBER,
CITIZEN_NAME VARCHAR2(32),
PHONE_NUMBER NUMBER(10),
CONSTRAINT CITIZEN_MASTER_PK PRIMARY KEY(CITIZEN_ID)
);

-- 2ND CANDIDATE_MASTER
CREATE TABLE CANDIDATE_MASTER
(
CANDIDATE_ID NUMBER,
CITIZEN_ID NUMBER
);
--3RD VOTE
CREATE TABLE VOTE
(
SL_NO NUMBER,
CITIZEN_ID NUMBER,
CANDIDATE_ID NUMBER
);
--========================================
SELECT * FROM CITIZEN_MASTER;
SELECT * FROM CANDIDATE_MASTER;
SELECT * FROM VOTE;
--================================================

INSERT INTO CITIZEN_MASTER VALUES(1,'JOHN CENA',9191000012);


INSERT INTO CITIZEN_MASTER VALUES(2,'TRPLE H',912000012);
INSERT INTO CITIZEN_MASTER VALUES(3,'KANE',9123000012);
INSERT INTO CITIZEN_MASTER VALUES(4,'BIG SHOW',9134000012);
INSERT INTO CITIZEN_MASTER VALUES(5,'THE ROCK',9145000012);
INSERT INTO CITIZEN_MASTER VALUES(6,'UNDERTAKER',9156000012);
INSERT INTO CITIZEN_MASTER VALUES(7,'EDGE',9167000012);
INSERT INTO CITIZEN_MASTER VALUES(8,'CHRISTIAN',9178000012);
INSERT INTO CITIZEN_MASTER VALUES(9,'MARK HENRY',9189000012);
INSERT INTO CITIZEN_MASTER VALUES(10,'BROCK LESNAR',9101000012);
INSERT INTO CITIZEN_MASTER VALUES(11,'GOLDBERG',9199000012);
INSERT INTO CITIZEN_MASTER VALUES(12,'REY MYSTERIO',9881000012);
INSERT INTO CITIZEN_MASTER VALUES(13,'GREAT KHALI',9771000012);
INSERT INTO CITIZEN_MASTER VALUES(14,'BOBBY LASHELY',9166000012);
INSERT INTO CITIZEN_MASTER VALUES(15,'UMAGA',9155000012);
INSERT INTO CITIZEN_MASTER VALUES(16,'DENIAL BRIAN',9144000012);
INSERT INTO CITIZEN_MASTER VALUES(17,'KURT ANGEL',9133000012);
INSERT INTO CITIZEN_MASTER VALUES(18,'SHAWN MICHAELS',9122000012);
INSERT INTO CITIZEN_MASTER VALUES(19,'KEVIN NASH',9787000012);
INSERT INTO CITIZEN_MASTER VALUES(20,'ROMAN REIGNS',9655600012);

-- INSERTION IN CANDIDATE MASTER TABLE


INSERT INTO CANDIDATE_MASTER VALUES(10,1);
INSERT INTO CANDIDATE_MASTER VALUES(15,6);
INSERT INTO CANDIDATE_MASTER VALUES(20,11);

-- SEQUENCE CREATION
CREATE SEQUENCE SL_NO_SEQ
START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
-- PROCEDURE CREATION

CREATE OR REPLACE PROCEDURE SP_VOTER_PROCEDURE_SCENARIO


(
P_ACTION VARCHAR2 :=NULL,
P_CITIZEN_ID NUMBER :=NULL,
P_CANDIDATE_ID NUMBER :=NULL
)

AS
--1ST CURSOR
CURSOR CM IS SELECT * FROM CITIZEN_MASTER WHERE CITIZEN_ID NOT IN(SELECT
CITIZEN_ID FROM CANDIDATE_MASTER)
ORDER BY CITIZEN_ID;

-- 2ND CURSOR
CURSOR CM1 IS SELECT C1.CITIZEN_ID,C1.CITIZEN_NAME,C2.CANDIDATE_ID FROM
CITIZEN_MASTER C1
INNER JOIN CANDIDATE_MASTER C2
ON C1.CITIZEN_ID = C2.CITIZEN_ID;

--3RD CURSOR
CURSOR DELL IS
SELECT C.CITIZEN_NAME ,COUNT(V.CANDIDATE_ID) AS VOTES
FROM CITIZEN_MASTER C
JOIN CANDIDATE_MASTER CM
ON C.CITIZEN_ID = CM.CITIZEN_ID
JOIN VOTE V
ON CM.CANDIDATE_ID = V.CANDIDATE_ID
GROUP BY C.CITIZEN_NAME;

--variable declaration:
VOTE_COUNT NUMBER;
CITIZEN_COUNT NUMBER;
V_CANDIDATE NUMBER;
--V_VOTE NUMBER;

BEGIN
SELECT COUNT(CANDIDATE_ID) INTO V_CANDIDATE FROM CANDIDATE_MASTER WHERE
CANDIDATE_ID = P_CANDIDATE_ID;

IF P_ACTION = 'VIEW ALL THE CITIZENS' THEN


FOR RES IN CM LOOP
DBMS_OUTPUT.PUT_LINE('CITIZEN_ID: '||RES.CITIZEN_ID);
DBMS_OUTPUT.PUT_LINE('CITIZEN_NAME: '||RES.CITIZEN_NAME);
END LOOP;
END IF;

IF P_ACTION = 'VIEW ALL THE CANDIDATES' THEN


FOR REC IN CM1 LOOP
DBMS_OUTPUT.PUT_LINE('CANDIDATE_ID: '||REC.CANDIDATE_ID);
DBMS_OUTPUT.PUT_LINE('CANDIDATE_NAME: '||REC.CITIZEN_NAME);
END LOOP;
END IF;

SELECT COUNT(CITIZEN_ID) INTO VOTE_COUNT FROM VOTE WHERE CITIZEN_ID =


P_CITIZEN_ID;
SELECT COUNT(CITIZEN_ID) INTO CITIZEN_COUNT FROM CITIZEN_MASTER
WHERE CITIZEN_ID NOT IN(SELECT CITIZEN_ID FROM CANDIDATE_MASTER)
AND CITIZEN_ID = P_CITIZEN_ID
ORDER BY CITIZEN_ID;

IF P_ACTION = 'VOTING' THEN


IF CITIZEN_COUNT = 1 THEN
IF VOTE_COUNT = 0 THEN
IF V_CANDIDATE = 1 THEN

INSERT INTO VOTE(SL_NO,CITIZEN_ID, CANDIDATE_ID)


VALUES(SL_NO_SEQ.NEXTVAL,P_CITIZEN_ID, P_CANDIDATE_ID);
DBMS_OUTPUT.PUT_LINE('Voted successfully.');

ELSE
DBMS_OUTPUT.PUT_LINE('you can vote only Candidate...!!!');
END IF;

ELSE
DBMS_OUTPUT.PUT_LINE('One Citizen Can Vote Once');
END IF;
ELSE
DBMS_OUTPUT.PUT_LINE('Candidate Cannot Give Vote');
END IF;
END IF;

IF P_ACTION = 'COUNTING' THEN


FOR R IN DELL
LOOP
DBMS_OUTPUT.PUT_LINE('CANDIDATE NAME: '||R.CITIZEN_NAME||'
'||'VOTES: '||R.VOTES);
END LOOP;
END IF;
END SP_VOTER_PROCEDURE_SCENARIO;

EXEC SP_VOTER_PROCEDURE_SCENARIO (P_ACTION=>'COUNTING');


--EXECUTION;

--1 Write a Query to select all the citizen those are not candidates.
EXEC SP_VOTER_PROCEDURE_SCENARIO(P_ACTION=>'VIEW ALL THE CITIZENS');

--2 Write a Query to select all the candidates.


EXEC SP_VOTER_PROCEDURE_SCENARIO(P_ACTION=>'VIEW ALL THE CANDIDATES');

--3 One citizen can vote once, if voted successfully then it will be saved into
vote table.
-- If the same citizen tried to give vote another time exception or error message
will be
-- raised that ‘Once Citizen Can Vote Once’.

EXEC SP_VOTER_PROCEDURE_SCENARIO ('VOTING',10,6);


EXEC SP_VOTER_PROCEDURE_SCENARIO ('VOTING',14,10);

EXEC SP_VOTER_PROCEDURE_SCENARIO ('VOTING',4,6);


EXEC SP_VOTER_PROCEDURE_SCENARIO ('VOTING',7,11);
EXEC SP_VOTER_PROCEDURE_SCENARIO ('VOTING',9,11);

--4. Candidate cannot give vote, if tried to give vote then exception or error
message
-- will be raised that ‘Candidate Cannot Give Vote’.
EXEC SP_VOTER_PROCEDURE_SCENARIO ('VOTING',11,7);
EXEC SP_VOTER_PROCEDURE_SCENARIO ('VOTING',1,6);

--5
EXEC SP_VOTER_PROCEDURE_SCENARIO ('VOTING',19,15);
EXEC SP_VOTER_PROCEDURE_SCENARIO ('VOTING',2,11);

--=================================================
SELECT * FROM CITIZEN_MASTER;
SELECT * FROM CANDIDATE_MASTER;
SELECT * FROM VOTE;

--==================================================

You might also like