Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
4 views

Pl SQL Program With Output

The document contains various SQL and PL/SQL scripts for string manipulation, employee management, student mark sheet preparation, payroll calculations, and insurance application management. It includes procedures for reversing strings, deleting records, calculating total salaries, and managing customer and policy information. Additionally, it demonstrates how to handle exceptions and output results using DBMS_OUTPUT.

Uploaded by

ayshasiraj2210
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views

Pl SQL Program With Output

The document contains various SQL and PL/SQL scripts for string manipulation, employee management, student mark sheet preparation, payroll calculations, and insurance application management. It includes procedures for reversing strings, deleting records, calculating total salaries, and managing customer and policy information. Additionally, it demonstrates how to handle exceptions and output results using DBMS_OUTPUT.

Uploaded by

ayshasiraj2210
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 20

REVERSE A STRING

DECLARE

str VARCHAR(20) := 'RAC, Tiruvarur';

len NUMBER;

str1 VARCHAR(20);

BEGIN

len := Length(str);

FOR i IN REVERSE 1.. len LOOP

str1 := str1 || Substr(str, i, 1);

END LOOP;

dbms_output.Put_line('Reverse of string is ' || str1);

END;
DELETE ANY RECORD AND COUNT IT

CREATE TABLE employeeDetails ( employee_id NUMBER(10) PRIMARY KEY, name VARCHAR2(10),


department VARCHAR2(20) );

INSERT INTO employeeDetails (employee_id, name, department) VALUES (101, 'John Smith', 'HR');

INSERT INTO employeeDetails (employee_id, name, department) VALUES (102, 'Jane Doe', 'IT');

INSERT INTO employeeDetails (employee_id, name, department) VALUES (103, 'Mike Brown', 'Finance');

INSERT INTO employeeDetails (employee_id, name, department) VALUES (104, 'Lisa Wong', 'HR');

INSERT INTO employeeDetails (employee_id, name, department) VALUES (105, 'Alice Grey', 'Marketing');

select * from employeeDetails;

CREATE TABLE department (department VARCHAR2(20),name VARCHAR2(10));


INSERT INTO department (department, name) VALUES ('HR', 'John Smith');
INSERT INTO department (department, name) VALUES ('Finance', 'Mike Brown');
INSERT INTO department (department, name) VALUES ('IT', 'Jane Doe');
DELETE FROM department WHERE name = ‘John Smith’;

SELECT count(*) FROM department WHERE name = ‘John Smith';

DECLARE

x INTEGER; -- Declare variable X correctly

BEGIN

DELETE FROM department WHERE name = 'John Smith';

x := SQL%ROWCOUNT; -- Assign the number of affected rows to X


DBMS_OUTPUT.PUT_LINE('Number of rows deleted: ' || x);

END;

SET SERVEROUTPUT ON;

DECLARE

cnt NUMBER; -- Correctly declare the variable

BEGIN

SELECT COUNT(DISTINCT employee_id) INTO cnt FROM employeeDetails; -- Fix the SELECT syntax

DBMS_OUTPUT.PUT_LINE('Number of ids are: ' || cnt); -- Use proper single quotes

END;

/
STUDENT MARK SHEET PREPARATION

SET SERVEROUTPUT ON

DECLARE

V_TOT_MARKS CONSTANT NUMBER:=500;

V_MKS_OBT NUMBER:=0;

V_1PAPER NUMBER:=NVL(&FIRST_PAPER,0);

V_2PAPER NUMBER:=NVL(&SECOND_PAPER,0);

V_3PAPER NUMBER:=NVL(&THIRD_PAPER,0);

V_4PAPER NUMBER:=NVL(&FOURTH_PAPER,0);

V_5PAPER NUMBER:=NVL(&FIFTH_PAPER,0);

V_PER NUMBER(5,2):=0;

V_GRADE VARCHAR2(05);

V_RES VARCHAR2(30);

BEGIN

IF (V_1PAPER>=40 AND V_2PAPER>=40 AND V_3PAPER>=40 AND V_4PAPER>=40 AND V_5PAPER>=40)


THEN

V_RES := 'PASS';

V_MKS_OBT := V_1PAPER + V_2PAPER + V_3PAPER + V_4PAPER + V_5PAPER;

V_PER :=TRUNC((V_MKS_OBT / V_TOT_MARKS)*100,2);

IF (V_PER >=95 AND V_PER <=100) THEN

V_GRADE := 'A-1';

ELSIF (V_PER >=85.00 AND V_PER <=94.99) THEN

V_GRADE := 'A';

ELSIF (V_PER >=75.00 AND V_PER <=84.99) THEN


V_GRADE := 'B';

ELSIF (V_PER >=40.00 AND V_PER <=74.99) THEN

V_GRADE := 'C';

END IF;

ELSE

V_RES := 'FAIL';

V_MKS_OBT := V_1PAPER + V_2PAPER + V_3PAPER + V_4PAPER + V_5PAPER;

V_PER :=TRUNC((V_MKS_OBT / V_TOT_MARKS)*100,2);

V_GRADE := 'F';

END IF;

DBMS_OUTPUT.PUT_LINE('FIRST PAPER MARKS := '||V_1PAPER||'/100');

DBMS_OUTPUT.PUT_LINE('SECOND PAPER MARKS := '||V_2PAPER||'/100');

DBMS_OUTPUT.PUT_LINE('THIRD PAPER MARKS := '||V_3PAPER||'/100');

DBMS_OUTPUT.PUT_LINE('FOURTH PAPER MARKS := '||V_4PAPER||'/100');

DBMS_OUTPUT.PUT_LINE('FIFTH PAPER MARKS := '||V_5PAPER||'/100');

DBMS_OUTPUT.PUT_LINE('TOTAL MARKS := '||V_MKS_OBT||'/'||V_TOT_MARKS);

DBMS_OUTPUT.PUT_LINE('PER% / GRADE := '||V_PER||'/'||V_GRADE);

DBMS_OUTPUT.PUT_LINE('RESULT := '||V_RES);

END;

/
FIND GRADE OF A STUDENT

DECLARE

score Number;
Grade Char(1);
BEGIN
Score:=&Score;
IF Score >= 90
THEN Grade := 'A’;
ELSIF Score >= 70
THEN Grade := 'B’;
ELSIF Score >= 60
THEN Grade := 'C’;
ELSIF Score >= 50
THEN Grade := 'D’;
ELSE Grade := 'E’;
END IF;
dbms_output.Put_line('Your Grade is: ' ||Grade);
END;
/
PAY ROLL PREPARATION

CREATE TABLE Employee_Payroll (

Employee_ID NUMBER PRIMARY KEY,

Employee_Name VARCHAR2(100),

Basic_Salary NUMBER,

HRA NUMBER,

DA NUMBER,

Other_Allowances NUMBER,

Total_Salary NUMBER

);

INSERT INTO Employee_Payroll (Employee_ID, Employee_Name, Basic_Salary, HRA, DA,


Other_Allowances) VALUES (1, 'John Doe', 50000, 10000, 5000, 2000);

INSERT INTO Employee_Payroll (Employee_ID, Employee_Name, Basic_Salary, HRA, DA,


Other_Allowances) VALUES (2, 'Jane Smith', 60000, 12000, 6000, 3000);

INSERT INTO Employee_Payroll (Employee_ID, Employee_Name, Basic_Salary, HRA, DA,


Other_Allowances) VALUES (3, 'Sam Wilson', 55000, 11000, 5500, 2500);

SET SERVEROUTPUT ON

CREATE OR REPLACE PROCEDURE Calculate_Total_Salary IS

CURSOR c_Employees IS

SELECT Employee_ID, Basic_Salary, HRA, DA, Other_Allowances

FROM Employee_Payroll;

v_Total_Salary NUMBER;

BEGIN

FOR emp IN c_Employees LOOP

-- Calculate total salary


v_Total_Salary := emp.Basic_Salary + emp.HRA + emp.DA + emp.Other_Allowances;

-- Update the total salary in the table

UPDATE Employee_Payroll

SET Total_Salary = v_Total_Salary

WHERE Employee_ID = emp.Employee_ID;

END LOOP;

COMMIT; -- Commit the changes

DBMS_OUTPUT.PUT_LINE('Total salaries calculated and updated successfully.');

END;

SET SERVEROUTPUT ON

CREATE OR REPLACE PROCEDURE Display_Payroll (p_Employee_ID NUMBER) IS

v_Employee_Name VARCHAR2(100);

v_Basic_Salary NUMBER;

v_HRA NUMBER;

v_DA NUMBER;

v_Other_Allowances NUMBER;

v_Total_Salary NUMBER;

BEGIN

SELECT Employee_Name, Basic_Salary, HRA, DA, Other_Allowances, Total_Salary

INTO v_Employee_Name, v_Basic_Salary, v_HRA, v_DA, v_Other_Allowances, v_Total_Salary

FROM Employee_Payroll

WHERE Employee_ID = p_Employee_ID;


DBMS_OUTPUT.PUT_LINE('Payroll Information for Employee ID: ' || p_Employee_ID);

DBMS_OUTPUT.PUT_LINE('Name: ' || v_Employee_Name);

DBMS_OUTPUT.PUT_LINE('Basic Salary: ' || v_Basic_Salary);

DBMS_OUTPUT.PUT_LINE('HRA: ' || v_HRA);

DBMS_OUTPUT.PUT_LINE('DA: ' || v_DA);

DBMS_OUTPUT.PUT_LINE('Other Allowances: ' || v_Other_Allowances);

DBMS_OUTPUT.PUT_LINE('Total Salary: ' || v_Total_Salary);

EXCEPTION

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE('No records found for Employee ID: ' || p_Employee_ID);

END;

SET SERVEROUTPUT ON;

EXEC Calculate_Total_Salary;

EXEC Display_Payroll(1);
INSURANCE APPLICATION

CREATE TABLE Customers (

Customer_ID NUMBER PRIMARY KEY,

Customer_Name VARCHAR2(100),

Address VARCHAR2(250),

Phone_Number VARCHAR2(15),

Email VARCHAR2(100)

);

CREATE TABLE Insurance_Policies (

Policy_ID NUMBER PRIMARY KEY,

Customer_ID NUMBER,
Policy_Type VARCHAR2(50),

Coverage_Amount NUMBER,

Premium_Amount NUMBER,

Start_Date DATE,

End_Date DATE,

FOREIGN KEY (Customer_ID) REFERENCES Customers(Customer_ID)

);

-- Inserting customers

INSERT INTO Customers (Customer_ID, Customer_Name, Address, Phone_Number, Email) VALUES (1,
'Alice Johnson', '123 Elm St, Springfield', '123-456-7890', 'alice@example.com’);

INSERT INTO Customers (Customer_ID, Customer_Name, Address, Phone_Number, Email) VALUES (2,
'Bob Smith', '456 Maple Ave, Springfield', '234-567-8901', 'bob@example.com');

-- Inserting policies

INSERT INTO Insurance_Policies (Policy_ID, Customer_ID, Policy_Type, Coverage_Amount,


Premium_Amount, Start_Date, End_Date) VALUES (1, 1, 'Health Insurance', 100000, 1200,
TO_DATE('2023-01-01', 'YYYY-MM-DD'), TO_DATE('2024-01-01', 'YYYY-MM-DD’));

INSERT INTO Insurance_Policies (Policy_ID, Customer_ID, Policy_Type, Coverage_Amount,


Premium_Amount, Start_Date, End_Date) VALUES (2, 2, 'Auto Insurance', 50000, 800, TO_DATE('2023-
06-01', 'YYYY-MM-DD'), TO_DATE('2024-06-01', 'YYYY-MM-DD'));

CREATE OR REPLACE PROCEDURE Add_Customer (

p_Customer_ID NUMBER,

p_Customer_Name VARCHAR2,

p_Address VARCHAR2,

p_Phone_Number VARCHAR2,

p_Email VARCHAR2

) IS
BEGIN

INSERT INTO Customers (Customer_ID, Customer_Name, Address, Phone_Number, Email)

VALUES (p_Customer_ID, p_Customer_Name, p_Address, p_Phone_Number, p_Email);

COMMIT;

DBMS_OUTPUT.PUT_LINE('Customer added successfully: ' || p_Customer_Name);

EXCEPTION

WHEN DUP_VAL_ON_INDEX THEN

DBMS_OUTPUT.PUT_LINE('Error: Customer ID already exists.');

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE('Error: ' || SQLERRM);

END;

CREATE OR REPLACE PROCEDURE Add_Policy (

p_Policy_ID NUMBER,

p_Customer_ID NUMBER,

p_Policy_Type VARCHAR2,

p_Coverage_Amount NUMBER,

p_Premium_Amount NUMBER,

p_Start_Date DATE,

p_End_Date DATE

) IS

BEGIN

INSERT INTO Insurance_Policies (Policy_ID, Customer_ID, Policy_Type, Coverage_Amount,


Premium_Amount, Start_Date, End_Date)
VALUES (p_Policy_ID, p_Customer_ID, p_Policy_Type, p_Coverage_Amount, p_Premium_Amount,
p_Start_Date, p_End_Date);

COMMIT;

DBMS_OUTPUT.PUT_LINE('Policy added successfully: ' || p_Policy_Type);

EXCEPTION

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE('Error: ' || SQLERRM);

END;

CREATE OR REPLACE PROCEDURE Get_Policy_Info (

p_Policy_ID NUMBER

) IS

v_Customer_Name VARCHAR2(100);

v_Policy_Type VARCHAR2(50);

v_Coverage_Amount NUMBER;

v_Premium_Amount NUMBER;

v_Start_Date DATE;

v_End_Date DATE;

BEGIN

SELECT c.Customer_Name, p.Policy_Type, p.Coverage_Amount, p.Premium_Amount, p.Start_Date,


p.End_Date

INTO v_Customer_Name, v_Policy_Type, v_Coverage_Amount, v_Premium_Amount, v_Start_Date,


v_End_Date

FROM Insurance_Policies p

INNER JOIN Customers c ON p.Customer_ID = c.Customer_ID


WHERE p.Policy_ID = p_Policy_ID;

DBMS_OUTPUT.PUT_LINE('Policy Information:');

DBMS_OUTPUT.PUT_LINE('Customer Name: ' || v_Customer_Name);

DBMS_OUTPUT.PUT_LINE('Policy Type: ' || v_Policy_Type);

DBMS_OUTPUT.PUT_LINE('Coverage Amount: ' || v_Coverage_Amount);

DBMS_OUTPUT.PUT_LINE('Premium Amount: ' || v_Premium_Amount);

DBMS_OUTPUT.PUT_LINE('Start Date: ' || TO_CHAR(v_Start_Date, 'YYYY-MM-DD'));

DBMS_OUTPUT.PUT_LINE('End Date: ' || TO_CHAR(v_End_Date, 'YYYY-MM-DD'));

EXCEPTION

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE('No policy found with Policy ID: ' || p_Policy_ID);

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE('Error: ' || SQLERRM);

END;

SET SERVEROUTPUT ON;

EXEC Add_Customer(3, 'Charlie Brown', '789 Oak St, Springfield', '345-678-9012',


'charlie@example.com');

SET SERVEROUTPUT ON;

EXEC Add_Customer(3, 'Charlie Brown', '789 Oak St, Springfield', '345-678-9012',


'charlie@example.com');
EXEC Add_Policy(3, 3, 'Home Insurance', 300000, 1500, TO_DATE('2023-07-01', 'YYYY-MM-DD'),
TO_DATE('2024-07-01', 'YYYY-MM-DD'));

EXEC Add_Policy(3, 3, 'Home Insurance', 300000, 1500, TO_DATE('2023-07-01', 'YYYY-MM-DD'),


TO_DATE('2024-07-01', 'YYYY-MM-DD'));

You might also like