w3resource

Math operations package in PL/SQL

PL/SQL Package: Exercise-4 with Solution

Write a PL/SQL code that implement a package that includes procedures and functions to perform complex mathematical operations, such as finding the nth root of a number and calculating logarithms.

Sample Solution:

PL/SQL Code:

CREATE OR REPLACE PACKAGE MathOperationsPackage AS
  PROCEDURE NthRoot(input_number IN NUMBER, n IN NUMBER, result OUT NUMBER);
  FUNCTION Logarithm(input_number IN NUMBER, base IN NUMBER) RETURN NUMBER;
END MathOperationsPackage;
/
CREATE OR REPLACE PACKAGE BODY MathOperationsPackage AS
  PROCEDURE NthRoot(input_number IN NUMBER, n IN NUMBER, result OUT NUMBER) IS
  BEGIN
    IF input_number< 0 AND n MOD 2 = 0 THEN
      RAISE_APPLICATION_ERROR(-20001, 'Cannot calculate even root of a negative number.');
    END IF;
result := input_number**(1/n);
  EXCEPTION
    WHEN OTHERS THEN
      RAISE_APPLICATION_ERROR(-20002, 'An error occurred while calculating the nth root.');
  END NthRoot;
  FUNCTION Logarithm(input_number IN NUMBER, base IN NUMBER) RETURN NUMBER IS
  BEGIN
    IF input_number<= 0 OR base <= 0 THEN
      RAISE_APPLICATION_ERROR(-20003, 'Both input number and base must be greater than zero.');
    END IF;
    RETURN LOG(input_number, base);
  EXCEPTION
    WHEN OTHERS THEN
      RAISE_APPLICATION_ERROR(-20004, 'An error occurred while calculating the logarithm.');
  END Logarithm;
END MathOperationsPackage;
/

Sample Output:

Package created.
Package Body created.

Flowchart:

Flowchart: Math operations package in PL/SQL
Flowchart: Math operations package in PL/SQL

To execute the package:

DECLARE
root_result NUMBER;
logarithm_result NUMBER;
BEGIN
MathOperationsPackage.NthRoot(16, 2, root_result);
  DBMS_OUTPUT.PUT_LINE('Square root of 16: ' || root_result);
MathOperationsPackage.NthRoot(-8, 3, root_result);
  DBMS_OUTPUT.PUT_LINE('Cube root of -8: ' || root_result);
EXCEPTION
  WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
/

Sample Output:

Statement processed.
Square root of 16: 4
ORA-20002: An error occurred while calculating the nth root.

Flowchart:

Flowchart: Math operations package in PL/SQL

Explanation:

The said code in Oracle's PL/SQL package that provides a convenient way to perform mathematical operations like nth root and logarithm in PL/SQL programs while ensuring the validity of input parameters and handling potential errors.

The PL/SQL package that includes two procedures "NthRoot" and "Logarithm".

The "NthRoot" procedure accepts the parameters "input_number", "n", and "result". It first checks whether the input_number is negative and the root value is even. If satisfied both, raises an application error with a message "even root of a negative number cannot be calculated". Otherwise, it performs the nth root calculation and assigns the result to the "result" output parameter.

The "Logarithm" function takes the parameters "input_number" and "base". It checks whether both the input_number and base are greater than zero or not. An application error raises If either of them is zero or negative, with a message both the input number and base must be greater than zero. The function then calculates the logarithm and returns the result.

Previous: Input validation package in PL/SQL.
Next: PL/SQL package for password generation and strength checking.

What is the difficulty level of this exercise?



Follow us on Facebook and Twitter for latest update.