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';
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')))
0 comentarios:
Publicar un comentario