You are on page 1of 4

SET SERVEROUTPUT ON;

CREATE TABLE BROADBAND_CONNECTION_MASTER(


CONNECTION_ID NUMBER,
CONNECTION_SPEED VARCHAR2(45),
PROVIDER_ID NUMBER,
FEES NUMBER(8,2),
CONSTRAINT BROADBAND_CONNECTION_MASTER_CONNECTION_ID_PK PRIMARY KEY
(CONNECTION_ID));

INSERT INTO BROADBAND_CONNECTION_MASTER VALUES (100, '1 GBPS', 10, 2000);


INSERT INTO BROADBAND_CONNECTION_MASTER VALUES (101, '100 MBPS', 10, 1500);
INSERT INTO BROADBAND_CONNECTION_MASTER VALUES (102, '70 MBPS', 10, 1000);
INSERT INTO BROADBAND_CONNECTION_MASTER VALUES (103, '50 MBPS', 10, 800);

INSERT INTO BROADBAND_CONNECTION_MASTER VALUES (200, '100 MBPS', 20, 1500);


INSERT INTO BROADBAND_CONNECTION_MASTER VALUES (201, '30 MBPS', 20, 800);
INSERT INTO BROADBAND_CONNECTION_MASTER VALUES (202, '70 MBPS', 20, 1000);
INSERT INTO BROADBAND_CONNECTION_MASTER VALUES (203, '50 MBPS', 20, 800);

INSERT INTO BROADBAND_CONNECTION_MASTER VALUES (300, '1 GBPS', 30, 2000);


INSERT INTO BROADBAND_CONNECTION_MASTER VALUES (301, '100 MBPS', 30, 1500);
INSERT INTO BROADBAND_CONNECTION_MASTER VALUES (302, '70 MBPS', 30, 1000);

INSERT INTO BROADBAND_CONNECTION_MASTER VALUES (400, '1 GBPS', 40, 1500);


INSERT INTO BROADBAND_CONNECTION_MASTER VALUES (401, '100 MBPS', 40, 500);
INSERT INTO BROADBAND_CONNECTION_MASTER VALUES (402, '30 MBPS', 40, 300);

INSERT INTO BROADBAND_CONNECTION_MASTER VALUES (500, '1 GBPS', 50, 1000);


INSERT INTO BROADBAND_CONNECTION_MASTER VALUES (501, '2 GBPS', 50, 1500);
INSERT INTO BROADBAND_CONNECTION_MASTER VALUES (502, '500 MBPS', 50, 1200);
INSERT INTO BROADBAND_CONNECTION_MASTER VALUES (503, '100 MBPS', 50, 1000);

CREATE TABLE BROADBAND_PROVIDER_MASTER(


PROVIDER_ID NUMBER,
PROVIDER_NAME VARCHAR2(45),
CONSTRAINT BROADBAND_PROVIDER_MASTER_PROVIDER_ID_PK PRIMARY KEY (PROVIDER_ID));

INSERT INTO BROADBAND_PROVIDER_MASTER VALUES (10, 'JIO');


INSERT INTO BROADBAND_PROVIDER_MASTER VALUES (20, 'BSNL');
INSERT INTO BROADBAND_PROVIDER_MASTER VALUES (30, 'AIRTEL');
INSERT INTO BROADBAND_PROVIDER_MASTER VALUES (40, 'VI');
INSERT INTO BROADBAND_PROVIDER_MASTER VALUES (50, 'MACTEL');

CREATE TABLE BORADBAND_REGISTRATION_DETAILS(


REGISTRATION_ID NUMBER,
APPLICANT_NAME VARCHAR2(45),
EMAIL_ID VARCHAR2(45),
MOBILE_NO VARCHAR2(12),
GENDER CHAR(5),
DOB DATE,
IMAGE_PATH VARCHAR2(45),
PROVIDER_ID NUMBER,
CONNECTION_ID NUMBER,
CONSTRAINT BORADBAND_REGISTRATION_DETAILS_REGISTRATION_ID_PK PRIMARY KEY
(REGISTRATION_ID),
CONSTRAINT BORADBAND_REGISTRATION_DETAILS_PROVIDER_ID_FK FOREIGN KEY (PROVIDER_ID)
REFERENCES BROADBAND_PROVIDER_MASTER (PROVIDER_ID),
CONSTRAINT BORADBAND_REGISTRATION_DETAILS_CONNECTION_ID_FK FOREIGN KEY
(CONNECTION_ID) REFERENCES BROADBAND_CONNECTION_MASTER (CONNECTION_ID));

SELECT * FROM BROADBAND_CONNECTION_MASTER;


SELECT * FROM BROADBAND_PROVIDER_MASTER;
SELECT * FROM BORADBAND_REGISTRATION_DETAILS;

DROP TABLE BROADBAND_CONNECTION_MASTER;


DROP TABLE BROADBAND_PROVIDER_MASTER;
DROP TABLE BORADBAND_REGISTRATION_DETAILS;

COMMIT;
--------------------------------------------------------------------------------
-- TRIGGER FOR AGE ABOVE 18 AND DATE OF BIRTH MUST BE IN DD/MM/YYYY FORMAT
CREATE OR REPLACE TRIGGER TRIGGER_DOB
BEFORE INSERT OR UPDATE ON BORADBAND_REGISTRATION_DETAILS
FOR EACH ROW
BEGIN
IF :NEW.DOB > ADD_MONTHS(SYSDATE, -12*18)
THEN
RAISE_APPLICATION_ERROR (-20001, 'AGE MUST NOT BELOW 18');
ELSIF :NEW.DOB != TO_DATE(TO_CHAR(:NEW.DOB,'DD-MM-YYYY'))
THEN
RAISE_APPLICATION_ERROR (-20002, 'DATE OF BIRTH MUST BE IN DD/MM/YYYY FORMAT');
END IF;
END;

CREATE OR REPLACE TRIGGER TRIGGER_DOB


BEFORE INSERT OR UPDATE ON BORADBAND_REGISTRATION_DETAILS
FOR EACH ROW
DECLARE
VALIDATE_DOB DATE;
BEGIN
SELECT TO_DATE(:NEW.DOB, 'DD-MM-YYYY') INTO VALIDATE_DOB FROM DUAL;
IF TO_DATE(VALIDATE_DOB,'DD-MM-YYYY') <> VALIDATE_DOB
THEN
RAISE_APPLICATION_ERROR (-20002, 'DATE OF BIRTH MUST BE IN DD/MM/YYYY FORMAT');
END IF;
END;

DROP TRIGGER TRIGGER_DOB


--------------------------------------------------------------------------------

CREATE OR REPLACE PROCEDURE SP_BROADBAND_CONNECTION(


P_PROVIDER_ID NUMBER := NULL,
P_CONNECTION_SPEED VARCHAR2 := NULL,
P_APPLICANT_NAME VARCHAR2 := NULL,
P_EMAIL_ID VARCHAR2 := NULL,
P_MOBILE_NO VARCHAR2 := NULL,
P_DOB VARCHAR2 := NULL,
P_GENDER CHAR := NULL,
P_IMAGE_PATH VARCHAR2 := NULL,
ACTION VARCHAR2)
AS
CURSOR CUR_PROVIDER_NAME IS SELECT PROVIDER_NAME FROM BROADBAND_PROVIDER_MASTER;
CURSOR CUR_CONNECTION_SPEED IS SELECT CONNECTION_SPEED FROM
BROADBAND_CONNECTION_MASTER WHERE PROVIDER_ID = P_PROVIDER_ID;
V_CONNECTION_ID NUMBER;
V_COUNT NUMBER;
E_INVALID_DOB DATE;
BEGIN
IF ACTION = 'A' -- SELECT SERVICE PROVIDER NAME
THEN
FOR REC IN CUR_PROVIDER_NAME LOOP
DBMS_OUTPUT.PUT_LINE (REC.PROVIDER_NAME);
END LOOP;

ELSIF ACTION = 'B' -- SELECT CONNECTION SPEED


THEN
FOR REC IN CUR_CONNECTION_SPEED LOOP
DBMS_OUTPUT.PUT_LINE (REC.CONNECTION_SPEED);
END LOOP;

ELSIF ACTION = 'C' -- USER REGISTRATION / APPLICANT DETAILS


THEN
BEGIN
SELECT CONNECTION_ID
INTO V_CONNECTION_ID
FROM BROADBAND_CONNECTION_MASTER
WHERE PROVIDER_ID = P_PROVIDER_ID AND CONNECTION_SPEED =
P_CONNECTION_SPEED;

SELECT COUNT(1) INTO V_COUNT FROM BORADBAND_REGISTRATION_DETAILS WHERE


MOBILE_NO = P_MOBILE_NO OR EMAIL_ID = P_EMAIL_ID;

IF V_COUNT = 0
THEN
IF LENGTH(P_APPLICANT_NAME) > 3 AND regexp_like(P_APPLICANT_NAME,
'^[^a-zA-Z]*$')
THEN
BEGIN
E_INVALID_DOB := TO_DATE(P_DOB,'DD/MM/YYYY');
INSERT INTO BORADBAND_REGISTRATION_DETAILS (REGISTRATION_ID,
APPLICANT_NAME, EMAIL_ID, MOBILE_NO, GENDER, DOB,
IMAGE_PATH, PROVIDER_ID, CONNECTION_ID)
VALUES (NVL((SELECT MAX(REGISTRATION_ID) FROM
BORADBAND_REGISTRATION_DETAILS),0)+1, UPPER(P_APPLICANT_NAME),
UPPER(P_EMAIL_ID), P_MOBILE_NO, UPPER(P_GENDER), E_INVALID_DOB,
UPPER(P_IMAGE_PATH), P_PROVIDER_ID, V_CONNECTION_ID);
DBMS_OUTPUT.PUT_LINE ('Successfully Registered!!');
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE ('DATE OF BIRTH MUST BE IN DD/MM/YYYY
FORMAT');
END;
ELSE
DBMS_OUTPUT.PUT_LINE ('APPLICANT NAME MUST BE MORE THAN 3 CHAR LONG
AND CONTAIN ONLY ALPHABETS');
END IF;
ELSIF V_COUNT = 1
THEN
DBMS_OUTPUT.PUT_LINE ('Mobile Number or Email ID Already Exists!!
Please Try Again Using New Email and New Phone Number');
END IF;
END;
END IF;
END SP_BROADBAND_CONNECTION;

BEGIN
SP_BROADBAND_CONNECTION (10, '100 MBPS', 'SUM43NT', 'SUMANT@GMAIL.COM',
'8908123456', '19-02-1995', 'MALE', 'C', 'C');
END;

You might also like