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;