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', '[email protected]’);
INSERT INTO Customers (Customer_ID, Customer_Name, Address, Phone_Number, Email) VALUES (2,
'Bob Smith', '456 Maple Ave, Springfield', '234-567-8901', '[email protected]');
-- 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',
'
[email protected]');
SET SERVEROUTPUT ON;
EXEC Add_Customer(3, 'Charlie Brown', '789 Oak St, Springfield', '345-678-9012',
'
[email protected]');
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'));