Ejemplo de llamada a una función Java desde Oracle

Oracle permite integrar código Java en el propio motor de base de datos, en esta entrada se muestra un pequeño ejemplo.

 

El código Java a ejecutar se puede incorporar a la base de datos cargando un archivo .jar mediante la instrucción loadjava (comando de sistema operativo que se encuentra en el directorio BIN de la base de datos) o creándolo directamente de forma similar a como se crea una función, procedimiento o paquete. En este ejemplo se usa esta segunda opción.

El siguiente código recibe por parámetro una fecha, desglosada en 6 campos numéricos (año, mes, día, hora, minuto y segundo) y la devuelve en formato texto:

CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "JavaDate" AS
  package pruebas;
  import java.util.Calendar;

  public class JavaDate {  
    public static String getString(int anho, int mes, int dia, int hora, int minuto, int segundo) {
      Calendar calendar;        
      calendar = Calendar.getInstance();
      calendar.set(anho, mes, dia, hora, minuto, segundo);
      return calendar.getTime().toString();
    }
  }

 

Una vez está el código Java creado en la base de datos, hay que crear una función o procedimiento para llamarlo:

CREATE OR REPLACE FUNCTION f_javadate(p_anho NUMBER,
                                      p_mes NUMBER,
                                      p_dia NUMBER,
                                      p_hora NUMBER,
                                      p_minuto NUMBER,
                                      p_segundo NUMBER) RETURN VARCHAR2 IS LANGUAGE JAVA
 NAME 'pruebas.JavaDate.getString(int, int, int, int, int, int) return String';

 

Ahora ya sólo falta invocarlo donde sea necesario, por ejemplo:

SELECT f_javadate(TO_NUMBER(TO_CHAR(SYSDATE, 'YYYY')),
                  TO_NUMBER(TO_CHAR(SYSDATE, 'MM')),
                  TO_NUMBER(TO_CHAR(SYSDATE, 'DD')),
                  TO_NUMBER(TO_CHAR(SYSDATE, 'HH24')),
                  TO_NUMBER(TO_CHAR(SYSDATE, 'MI')),
                  TO_NUMBER(TO_CHAR(SYSDATE, 'SS')))
 FROM DUAL;

 

Related Posts Plugin for WordPress, Blogger...

LIBRA Oracle ERPLIBRA, software de gestión empresarial (ERP-CRM-BPM) basado en ORACLE, desarrollado por la empresa EDISA. Más información

En las próximas horas recibirás respuesta a tu comentario en el correo indicado: