Saltar al contenido

Aprende a Usar la PL-SQL Function en Oracle TO_CHAR Eficientemente en PL-SQL Packages en Oracle

PL-SQL Function en OracleAprender a utilizar de forma eficiente la PL-SQL Function en Oracle TO_CHAR te permitirá transformar datos numéricos y de fecha a datos de tipo texto proporcionándole el formato que desees para cada dato en tus PL-SQL Packages en Oracle. La PL-SQL Function en Oracle TO_CHAR es muy útil cuando se requiere formatear los datos que se van a mostrar en una consulta SELECT en la base de datos en tus PL-SQL Packages en Oracle.

La PL-SQL Function en Oracle TO_CHAR cuenta con tres parámetros cuya sintaxis es la siguiente:

/* PL-SQL Function en Oracle */

TO_CHAR(<fecha/número>,<formato>,<separadores>)

Fecha: Corresponde a un dato de tipo fecha (Date)

Número: Corresponde a un dato de tipo numérico (Number)

Formato: Corresponde a una cadena de caracteres que permite dar formato al dato que se está transformando. Existen muchos formatos que se pueden usar tanto para las fechas como para los números, vamos a revisar los más utilizados.

Separadores: Corresponde a una cadena de caracteres que permite definir los caracteres separadores para los miles y los decimales. Este parámetro se usa solo para los datos numéricos.

La PL-SQL Function en Oracle TO_CHAR se puede ocupar con un comando SQL o asignándola directamente a una variable. Revisemos a continuación algunos ejemplos prácticos que te permitan entender de mejor forma como se debe usar la PL-SQL Function en Oracle TO_CHAR en tus PL-SQL Packages en Oracle:

Ejemplo #1: Supone que debes mostrar la fecha de ingreso de un empleado en varios formatos distintos, veamos cómo se hace:

/* PL-SQL Function en Oracle */

Select

To_char(emp.fec_ingreso,’dd/mm/yyyy’),

To_char(emp.fec_ingreso,’yyyy-mm-dd’),

To_char(emp.fec_ingreso,’month’),

To_char(emp.fec_ingreso,’yyyy-mm-dd hh:mi:ss’),

To_char(emp.fec_ingreso,’dd/mm/yyyy hh24:mi:ss’),

To_char(emp.fec_ingreso,’d’)

From t_empleado  emp

Where emp.rut = pin_rut;

Los caracteres de la PL-SQL Function en Oracle TO_CHAR corresponden a: dd= número del día, mm= número del mes, yyyy= número del año, hh= hora am/pm, hh24= formato en 24 horas, mi= minutos, ss= segundos, d= día de la semana y month= nombre del mes. El resultado de esta query en tus PL-SQL Packages en Oracle es el siguiente:

/* PL-SQL Function en Oracle */

01/04/2011

2011-04-01

Abril

2011-04-01 05:38:14

01/04/2011 17:38:14

5

TÚ REPORTE: “Cómo Construir un SELECT Eficiente en ORACLE en Solo 7 Pasos”

¡ Haz Click Aquí y Descárgalo GRATIS Ahora !

Ejemplo #2: Supone que debes mostrar el sueldo del empleado y sus días trabajados en un formato más amigable y claro a la vista, vamos como se hace usando TO_CHAR:

/* PL-SQL Function en Oracle */

Select

To_char(emp.sueldo_emp,’ 999G999G999G999G999’,

’NLS_NUMERIC_CHARACTERS = ”,.”’) sueldo,

To_char(emp.dias,’ 999G999G999G999D99’,’ NLS_NUMERIC_CHARACTERS = ”,.”’) dias

From t_empleado emp

Where emp.rut = pin_rut;

Los caracteres de la PL-SQL Function en Oracle TO_CHAR corresponden a: 9= representa un número, G= representa el carácter separador de miles, D= representa el punto decimal, NLS_NUMERIC_CHARACTERS= define los caracteres separadores de miles y decimales. El resultado de esta query en tus PL-SQL Packages en Oracle es el siguiente:

Sueldo                        Días

3.450.322                   29,50

Te propongo que pruebes de inmediato este ejemplo en tu Base de Datos con tus propios PL-SQL Procedures en Oracle y PL-SQL Function en Oracle, para que comiences a ejercitar la mano y aprendas a dominar esta nueva técnica en tus PL-SQL Packages en Oracle.

Estoy muy interesado en conocer tu opinión y/o comentario sobre este artículo, también cuéntame sobre qué es lo que quieres saber de PL-SQL Function en Oracle y/o dime cuál es tu principal frustración a la hora de trabajar con PL-SQL Function en Oracle. Estaré muy atento respondiendo tus preguntas y/o comentarios, gracias.

Saludos

Roberto Vicencio – Escritor del Reporte:

Cómo Construir un SELECT Eficiente en ORACLE en Solo 7 Pasos

10 comentarios en «Aprende a Usar la PL-SQL Function en Oracle TO_CHAR Eficientemente en PL-SQL Packages en Oracle»

  1. hola, tengo una cocnsulta. Tego una variable tipo number la cual , al querer mostrarla por el dbms.. no me muestra el resultado cuando como corersponde cuando son decimales. por ejemplo me muestra un 1,2 o un 15,3 pero cuando es 0,5 no me muestra el 0. ya le puse una mascara y no funciona. necesito estos datos para un reporte, espero y me pudas contestar . saludos!

    1. Hola Judycleo, gracias por comunicarte, para mostrar el 0. con dbms_output debes darle formato con la función to_char de esta forma:

      lin_valor:= 0.5;
      dbms_output.put_line(to_char(lin_valor,’0D99′));
      Resultado: 0,50

      Prueba este ejemplo, te funcionará.

      Saludos
      Roberto Vicencio – Para Tu Éxito con Oracle.

      PD: Ya recibiste mi reporte gratuito, si aún no lo has hecho puedes obtenerlo aquí:
      https://dominatuspackagesen0racle.com

  2. Me ha resultado de gran utilidad ya que además de estar muy bien explicado los ejemplos que incorporan no deja la menor duda.

    Muchas gracias por el esfuerzo que realizas para darnos soporte a los demás.

    1. Hola Pascualino, gracias por comunicarte y por tu comentario, una vez que generes el reporte desde un procedimiento almacenado puedes enviar el reporte por email utilizando la librería UTL_SMTP de Oracle, el código que se usa es un poco extenso para pegarlo aquí pero lo puedes buscar en la red y encontraras varios ejemplos que puedes usar, solo debes programar un poco en donde se atacha el archivo, gracias.

      PD: Si te gusta el contenido del blog comparte este enlace https://dominatuspackagesen0racle.com/ con tus amigos o personas que también les pueda interesar este contenido.

      Saludos
      Roberto Vicencio – Para Tu Éxito con Oracle.
      https://dominatuspackagesen0racle.com/

  3. Hola Roberto, mira solo tenia una duda, como puedo presentar solo la hora de un date con formato hh:mi:ss pero adicionalmente quiero que me aparezca con pm o am segun el caso. Saludos y gracias de antemano por tomarte tiempo de leer mi comentario.

    1. Hola Gibran, gracias por comunicarte, para hacer eso solo debes agregar al formato las letras a.m. o p.m., es decir, to_char(sysdate,’hh:mi:ss a.m.’) y de forma automática se mostrará si la hora es AM o PM, por ejemplo 09:35:59 AM o 15:49:21 PM.

      PD: Si te ha gustado el blog te invito a compartir el enlace https://dominatuspackagesen0racle.com/ con tus amigos o personas que también les pueda interesar este contenido, gracias.

      Saludos
      Roberto Vicencio – Para Tu Éxito con Oracle.

  4. gracias amigo encontre justo lo que necesitaba, es una tontera pero tenia las , en vez de los . y tan sencillo como cambiarlos por G jejeje gracias y saludos.

    TO_CHAR(SUM(SALARY),’$999,999,999′) = $4,400
    TO_CHAR(SUM(SALARY),’$999G999G999′) = $4.400

    1. Hola Claudio, gracias por comunicarte, me da mucho gusto que este artículo te sea de utilidad, ya pudiste ver mi libro reporte sobre ‘Cómo Crear un SELECT Eficiente en ORACLE en Solo 7 Pasos’, si aun no lo tienes en tus manos puedes obtenerlo gratis desde aquí: https://dominatuspackagesen0racle.com/

      Saludos
      Roberto Vicencio – Para Tu Éxito con Oracle.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.