Monday, October 21, 2019

PL/SQL Procedure/Function to display total salary without using sum function

SQL> CREATE OR REPLACE PROCEDURE P_TOTAL_SALARY (I_DEPTNO NUMBER)
  2  AS
  3     V_SAL_SUM   NUMBER := 0;
  4  BEGIN
  5     FOR K IN (SELECT SAL, COMM
  6                 FROM EMP
  7                WHERE DEPTNO = I_DEPTNO)
  8     LOOP
  9        V_SAL_SUM := V_SAL_SUM + NVL (K.SAL, 0) + NVL (K.COMM, 0);
 10     END LOOP;
 11
 12     DBMS_OUTPUT.PUT_LINE ('Total Salary Of Employee=' || V_SAL_SUM);
 13  EXCEPTION
 14     WHEN OTHERS
 15     THEN
 16        DBMS_OUTPUT.PUT_LINE (
 17           'Oracel Error Code-' || SQLCODE || '~Error Message-' || SQLERRM);
 18  END;
 19  /

Procedure created.

SQL> -- Execution
SQL> SET SERVEROUTPUT ON
SQL> EXEC P_TOTAL_SALARY(10);
Total Salary Of Employee=8750

PL/SQL procedure successfully completed.


SQL> BEGIN P_TOTAL_SALARY(10); END;
  2  /
Total Salary Of Employee=8750

PL/SQL procedure successfully completed.

SQL>
SQL> -- Using SUM function
SQL> SELECT SUM(NVL(SAL,0)+NVL(COMM,0)) AS TOTAL_SALARY FROM EMP WHERE DEPTNO=10;

TOTAL_SALARY
------------
        8750

SQL>

SQL> CREATE OR REPLACE FUNCTION F_TOTAL_SALRAY (I_DEPTNO NUMBER)
  2     RETURN NUMBER
  3  AS
  4     V_SAL_SUM   NUMBER := 0;
  5  BEGIN
  6     FOR K IN (SELECT SAL, COMM
  7                 FROM EMP
  8                WHERE DEPTNO = I_DEPTNO)
  9     LOOP
 10        V_SAL_SUM := V_SAL_SUM + NVL (K.SAL, 0) + NVL (K.COMM, 0);
 11     END LOOP;
 12
 13     DBMS_OUTPUT.PUT_LINE ('Total Salary Of Employee=' || V_SAL_SUM);
 14     RETURN V_SAL_SUM;
 15  EXCEPTION
 16     WHEN OTHERS
 17     THEN
 18        RETURN 0;
 19        DBMS_OUTPUT.PUT_LINE (
 20           'Oracel Error Code-' || SQLCODE || '~Error Message-' || SQLERRM);
 21  END;
 22  /

Function created.

SQL> SELECT F_TOTAL_SALRAY(10) FROM DUAL;

F_TOTAL_SALRAY(10)
------------------
              8750

Total Salary Of Employee=8750
SQL> SET SERVEROUTPUT ON;
SQL>
SQL> DECLARE
  2     V_DEPTNO      NUMBER := 10;
  3     V_TOTAL_SAL   NUMBER := NULL;
  4  BEGIN
  5     V_TOTAL_SAL := F_TOTAL_SALRAY (V_DEPTNO);
  6     DBMS_OUTPUT.PUT_LINE ('Total Salary Of Employee=' || V_TOTAL_SAL);
  7  END;
  8  /
Total Salary Of Employee=8750
Total Salary Of Employee=8750

PL/SQL procedure successfully completed.

SQL>

No comments:

Post a Comment

Delete Row Button to all records of Interactive Report in Oracle Apex

 1. add 'Delete' Del column to Report Query 2. Set the Following Properties for the DEL Column Type: Link Heading: Delete Targ...