980
CREATE OR REPLACE PACKAGE money_pkg IS
TYPE money_type IS RECORD (
rupees NUMBER,
paisa NUMBER
);
FUNCTION create_money(rupees NUMBER, paisa NUMBER) RETURN money_type;
FUNCTION add_money(m1 money_type, m2 money_type) RETURN money_type;
FUNCTION subtract_money(m1 money_type, m2 money_type) RETURN money_type;
FUNCTION display_money(m money_type) RETURN VARCHAR2;
END money_pkg;
/
CREATE OR REPLACE PACKAGE BODY money_pkg IS
FUNCTION create_money(rupees NUMBER, paisa NUMBER) RETURN money_type IS
m money_type;
BEGIN
m.rupees := rupees + TRUNC(paisa / 100);
m.paisa := MOD(paisa, 100);
RETURN m;
END create_money;
FUNCTION add_money(m1 money_type, m2 money_type) RETURN money_type IS
m money_type;
total_paisa NUMBER;
BEGIN
total_paisa := m1.paisa + m2.paisa;
m.rupees := m1.rupees + m2.rupees + TRUNC(total_paisa / 100);
m.paisa := MOD(total_paisa, 100);
RETURN m;
END add_money;
FUNCTION subtract_money(m1 money_type, m2 money_type) RETURN money_type IS
m money_type;
total_paisa1 NUMBER;
total_paisa2 NUMBER;
diff_paisa NUMBER;
BEGIN
total_paisa1 := m1.rupees * 100 + m1.paisa;
total_paisa2 := m2.rupees * 100 + m2.paisa;
diff_paisa := total_paisa1 - total_paisa2;
m.rupees := TRUNC(diff_paisa / 100);
m.paisa := MOD(diff_paisa, 100);
RETURN m;
END subtract_money;
FUNCTION display_money(m money_type) RETURN VARCHAR2 IS
BEGIN
RETURN TO_CHAR(m.rupees) || ' Rupees and ' || TO_CHAR(m.paisa) || ' Paisa';
END display_money;
END money_pkg;