Se encarga de convertir una expresión (expr) en un valor de tipo de dato NUMBER. Es decir el valor de la expresión (expr) puede ser un valor de tipo de dato CHAR, VARCHAR2, NCHAR, NVARCHAR2 o BINARY_DOUBLE.
Sintaxis.
TO_NUMBER(expr [, fmt [,nlsparam ] ])
Validar la función creada:
- No es compatible con los datos CLOB directamente. Sin embargo, CLOB se pueden pasar como argumentos a través de la conversión de datos implícita.
- El argumento nlsparam, en esta función tiene el mismo propósito que en la función TO_CHAR(). Además puedes dar el formato (fmt) de la mascará haciendo uso de la función TO_CHAR().
- La función NVL() se puede utilizar a partir de Oracle 10g y Oracle 11g.
Sintaxis.
TO_NUMBER(expr [, fmt [,nlsparam ] ])
Ejemplo:
Convertir la expresión de tipo de dato VARCHAR2, haciendo uso de la función TO_NUMBER().DECLARE pVARCHAR2 VARCHAR2(50) := '59300.65';--Considerar la cantidad de enteros y decimales en la entrada de datos, es decir si --la entrada contiene 5 enteros y 2 decimales (ejemplo - 59300.65 cincuenta y nueve mil --trecientos con sesenta y cinco), nuestro dato de salida debe soporta la longitud de --5 enteros y 2 decimas (ejemplo de retorno, '99999.99') pNUMBER NUMBER ; pNUMBER2 NUMBER; BEGIN pNUMBER := TO_NUMBER(pVARCHAR2,'999999999999999999.99');--Incluye los decimales... ejmplo 59300,65 pNUMBER2:= TO_NUMBER(pVARCHAR2,'999999999999999999D99');--Excluye los decimales... ejemplo 5930065 DBMS_OUTPUT.PUT_LINE('Conversion usando punto : ' || pNUMBER); DBMS_OUTPUT.PUT_LINE('Conversion usando la letra D : ' || pNUMBER2); END;Para poder convertir una expresión en cualquier parte de nuestra implementación sería lo optimo crear una función que realice todo esta conversión, y hacer referencia a dicha función creada.
CREATE OR REPLACE FUNCTION FN_FORMATEO_EXPRESION( pVARCHAR2 IN VARCHAR2 ) RETURN NUMBER IS pNUMBER NUMBER; BEGIN pNUMBER := TO_NUMBER(pVARCHAR2 ,'99999999999.99'); RETURN pNUMBER ; END FN_FORMATEO_EXPRESION;
Validar la función creada:
SELECT MI_ESQUEMA.FN_FORMATEO_EXPRESION('59300.65') FROM DUAL;
Consideraciones:
- Puedes especificar una expresión de tipo BINARY_FLOAT. Sin embargo, no tiene relevancia en hacerlo porque un tipo float solo puede ser interpretado por su presentación interna.- No es compatible con los datos CLOB directamente. Sin embargo, CLOB se pueden pasar como argumentos a través de la conversión de datos implícita.
- El argumento nlsparam, en esta función tiene el mismo propósito que en la función TO_CHAR(). Además puedes dar el formato (fmt) de la mascará haciendo uso de la función TO_CHAR().
- La función NVL() se puede utilizar a partir de Oracle 10g y Oracle 11g.
0 Comentarios