Tuesday, September 30, 2014

Function to convert Number to Arabic Number

FUNCTION convert_to_arabic (p_input IN VARCHAR2, p_msg OUT VARCHAR2)
    RETURN VARCHAR2
    IS
    --
    l_output VARCHAR2(20) DEFAULT NULL;


    CURSOR csr_convert (cp_value VARCHAR2)
    IS
    SELECT TRANSLATE (cp_value,'0123456789',
                         UNISTR ('\0660')
                      || UNISTR ('\0661')
                      || UNISTR ('\0662')
                      || UNISTR ('\0663')
                      || UNISTR ('\0664')
                      || UNISTR ('\0665')
                      || UNISTR ('\0666')
                      || UNISTR ('\0667')
                      || UNISTR ('\0668')
                      || UNISTR ('\0669')
                    ) arabic_numerals
       FROM DUAL;

    BEGIN
   
    IF p_input IS NOT NULL THEN
        
        OPEN csr_convert(p_input);
        FETCH csr_convert INTO l_output;
        CLOSE csr_convert;
       
    END IF;
   
    RETURN l_output;
   
    EXCEPTION     
    WHEN OTHERS THEN
        IF csr_convert%ISOPEN THEN
            CLOSE csr_convert;
        END IF;
       
       p_msg := SUBSTR(SQLERRM,1,200);
       RETURN l_output;
    END convert_to_arabic;