CREATE OR REPLACE FUNCTION PREMIUMDO(pPolicyId   IN   VARCHAR2,
                                                           pPolicyRiskId IN  VARCHAR2,
                                                           pPolicyRiskCoverId IN  VARCHAR2,
                                                           pRetCode      OUT NUMBER,
                                                           pRetErr       OUT VARCHAR2)
  RETURN VARCHAR IS
  l_covercode varchar2(1000);
  l_plan varchar2(50);
  VMETHOD   VARCHAR2(100) := '';
  V_PREMIUM  NUMBER(20, 6);
  v_endorse_type     varchar2(100);
  l_policy_status    iims_uwr.t_policy.pol_policy_status%type;
  l_product_code     VARCHAR2(100);
  calcRate NUMBER(20,6);
  oldunit Number(20,6);
  newunit Number(20,6);
  duration_type varchar2(10);
  policy_expiry_date DATE;
  endorsement_effective_date DATE;

begin
 pRetCode := 0;
  pRetErr  := NULL;

    begin
      select p.pol_policy_status, p.pol_product_code
        into l_policy_status, l_product_code
        from iims_uwr.t_policy p
       where pol_policy_id = ppolicyid;
    exception
      when others then
        l_policy_status := '';
        l_product_code  := '';
    end;

     BEGIN
    SELECT NVL(TPP.POP_VALUE_ALPHA_CODE, TPP.POP_VALUE_DESCRIPTION)

      INTO l_plan
      FROM IIMS_UWR.T_POLICY_PROPERTY TPP
     WHERE TPP.POP_POL_POLICY_ID = pPolicyId
       AND TPP.POP_PAR_PARAMETER_NAME IN ('Policy Plan')
       AND TPP.POP_EFFECTIVE_END_DATE IS NULL;
      -- iims_int.testjoy('SAMEone'||pPolicyId||VPLAN);

  EXCEPTION
    WHEN OTHERS THEN
      pRetCode := SQLCODE;
      pRetErr  := SQLERRM;
  END;
 IF l_product_code='1913' AND L_PLAN='DO' AND l_policy_status='06' THEN 

        BEGIN
          select aa.prp_value_number 
          into V_PREMIUM
          from t_policy_risk_property aa 
          where aa.prp_par_parameter_name='Premium' 
          and aa.prp_prk_pol_policy_id=pPolicyId
          and aa.prp_effective_end_date is null;
        EXCEPTION
        WHEN OTHERS THEN
            V_PREMIUM := 0;
        END;

   
      BEGIN

      select r.pod_policy_expiry_date -- policy expiry date
      into policy_expiry_date
      from t_policy_detail r 
      where r.pod_pol_policy_id=pPolicyId
      and r.pod_effective_end_date is null;
      
      EXCEPTION
        WHEN OTHERS THEN
            policy_expiry_date := '01/01/1970';
      END;
      
      BEGIN
      select r.pod_effective_start_date -- endorsement effective date
      into endorsement_effective_date
      from t_policy_detail r 
      where r.pod_pol_policy_id=pPolicyId
      and r.pod_effective_end_date is null;
      
      EXCEPTION
        WHEN OTHERS THEN
            endorsement_effective_date := '01/01/1970';
      END;
      
      END;

     
     END IF;
    
    return V_PREMIUM;

exception
  when OTHERS then
    pRetCode := SQLCODE;
    pRetErr  := SQLERRM;
    RETURN 1;
END PREMIUMDO;
 

PL/SQL Online Compiler

Write, Run & Share PL/SQL code online using OneCompiler's Oracle PL/SQL online editor and compiler for free. It's one of the robust, feature-rich online editor and compiler for Oracle PL/SQL running on latest version 23c (23.3.0.0). Getting started with the OneCompiler's Oracle PL/SQL editor is really simple and pretty fast. The editor shows sample boilerplate code when you choose language as 'PL/SQL' and start writing code to learn and test online without worrying about tedious process of installation.

About PL/SQL

PL/SQL is procedural extension for SQL created by Oracle. It is by default embedded into the Oracle Database. PL/SQL program units are compiled and stored inside the Oracle Database which results in optimal execution times as the PL/SQL and SQL run within the same server process.

Syntax help

Following is the syntax structure for the PL/SQL code blocks

DECLARE 
   <declarations section> 
BEGIN 
   <executable command(s)>
EXCEPTION 
   <exception handling> 
END;

Example

DECLARE 
   message  varchar2(100):= 'Hello, World!'; 
BEGIN 
   dbms_output.put_line(message); 
END; 
/

Named procedures

CREATE OR REPLACE FUNCTION 
hello_user
   (user_name IN VARCHAR2) 
    RETURN VARCHAR2
IS
BEGIN
   RETURN 'Hello ' || user_name;
END hello_user;
/

BEGIN
   dbms_output.put_line(hello_user('Peter'));
END;
/

Exception handling

BEGIN
  DBMS_OUTPUT.put_line (1/0);
EXCEPTION
  WHEN OTHERS
  THEN
    DBMS_OUTPUT.put_line ('error is: ' || SQLERRM);
END;