DECLARE
  N   NUMBER;
  VAL NUMBER;
  num NUMBER := 100;
BEGIN
  SELECT DECODE(
                LENGTH (SUBSTR(VAL1,DECODE(INSTR(VAL1,'.',1,1),0,LENGTH(VAL1)+1,INSTR(VAL1,'.',1,1)+1)) ),
                NULL,0,LENGTH (SUBSTR(VAL1,DECODE(INSTR(VAL1,'.',1,1),0,LENGTH(VAL1)+1,INSTR(VAL1,'.',1,1)+1)) )
             )
  INTO N
  FROM (SELECT NUM AS VAL1 FROM DUAL );
  DBMS_OUTPUT.PUT_LINE('GIVEN NUMBER:'||' '||NUM);
  DBMS_OUTPUT.PUT_LINE('Numbers after decimal points:'||' '||N);
  IF N<=2 THEN
    SELECT ROUND(NUM,2) INTO VAL FROM DUAL;
    DBMS_OUTPUT.PUT_LINE('OUTPUT:'||' '||to_char(VAl,999999999.99));
  elsIF  N>=3 THEN
    SELECT ROUND(NUM,4) INTO VAL FROM DUAL;
    DBMS_OUTPUT.PUT_LINE('else OUTPUT:'||' '||VAL);

  END IF;
END;