Rutinas SQL Java
Enviado por niniz • 14 de Junio de 2013 • Examen • 3.743 Palabras (15 Páginas) • 593 Visitas
Rutinas SQL Java
El sistema proporciona capacidad para acceder a programas Java™ desde programas y sentencias SQL. Esta operación puede realizarse mediante procedimientos almacenados Java y funciones definidas por usuario (UDF) Java. El IBM® i permite utilizar ambos convenios, el de DB2 y el de SQLJ, para llamar a procedimientos almacenados Java y a funciones UDF Java. Tanto los procedimientos almacenados Java como las UDF Java pueden utilizar clasesJava almacenadas en archivos JAR. El IBM i emplea procedimientos almacenados definidos por el estándar SQLJ Parte 1 para registrar archivos JAR en la base de datos.
• Utilizar rutinas SQL Java
Puede acceder a programas Java desde sentencias y programas SQL. Esta operación puede realizarse mediante procedimientos almacenados Java y funciones definidas por usuario (UDF)Java.
• Procedimientos almacenados Java
Cuando se utiliza Java para escribir procedimientos almacenados, se pueden utilizar dos estilos posibles para pasar parámetros.
• Funciones escalares Java definidas por usuario
La función escalar Java devuelve un valor a la base de datos desde un programa Java. Por ejemplo, se podría crear una función escalar que devolviera la suma de dos números.
• Procedimientos SQLJ que manipulan archivos JAR
Tanto los procedimientos almacenados Java como las funciones definidas por usuario (UDF) Java pueden utilizar clases Java almacenadas en archivos JAR Java.
• Convenios de pase de parámetros para procedimientos almacenados y funciones definidas por usuario (UDF) Java
En la tabla que sigue figura una lista de cómo se representan los tipos de datos SQL en los procedimientos almacenados y las UDF Java.
Utilizar rutinas SQL Java
Puede acceder a programas Java™ desde sentencias y programas SQL. Esta operación puede realizarse mediante procedimientos almacenados Java y funciones definidas por usuario (UDF) Java.
Para utilizar rutinas SQL Java, realice estas tareas:
1. Habilitar SQLJ
Dado que las rutinas SQL Java pueden utilizar SQLJ, haga que el soporte de tiempo de ejecución SQLJ esté siempre disponible al ejecutar la plataforma Java 2, Standard Edition (J2SE). Para habilitar el soporte de tiempo de ejecución para SQLJ en J2SE, añada un enlace al archivo runtime.zip de SQLJ desde el directorio de extensiones. Hallará más información en: Configurar el sistema para que utilice SQLJ.
2. Escribir los métodos Java para las rutinas
La rutina SQL Java procesa un método Java desde SQL. Este método debe haberse escrito utilizando los convenios de paso de parámetros de DB2 para i o SQLJ. Vea los procedimientos almacenados Java, las funciones definidas por usuario Java y las funciones de tabla definidas por usuario Java para obtener más información sobre cómo escribir el código de un método empleado por una rutina SQL Java.
3. Compilar las clases Java
Las rutinas SQL Java escritas utilizando el estilo de los parámetros Java se pueden compilar sin ninguna configuración adicional. Sin embargo, las rutinas SQL Java que utilizan el estilo de los parámetros de DB2GENERAL deben ampliar la clase com.ibm.db2.app.UDF o la clase com.ibm.db2.app.StoredProc. Estas clases se encuentran en el archivo JAR /QIBM/ProdData/Java400/ext/db2routines_classes.jar. Si se utiliza javac para compilar estas rutinas, este archivo JAR debe existir en la CLASSPATH. Por ejemplo, el mandato que sigue compila un archivo fuente Java que contiene una rutina que emplea el estilo de los parámetros de DB2GENERAL:
javac -DCLASSPATH=/QIBM/ProdData/Java400/ext/db2routines_classes.jar
source.java
4. Hacer que las clases compiladas sean accesible para la máquina virtual Java (JVM) que emplea la base de datos
Las clases definidas por usuario utilizadas por la máquina virtual Java (JVM) de la base de datos pueden residir en el directorio /QIBM/UserData/OS400/SQLLib/Function o en un archivo JAR registrado para la base de datos.
/QIBM/UserData/OS400/SQLLib/Function es el equivalente IBM® i de /sqllib/function, directorio en el que DB2 para i almacena los procedimientos almacenados Java y las UDF Java en otras plataformas. La clase, si forma parte de un paquete Java, debe residir en el subdirectorio pertinente. Por ejemplo, si se crea la clase runit como parte del paquete foo.bar, el archivo runnit.class debe estar en el directorio del sistema de archivos integrado, /QIBM/ProdData/OS400/SQLLib/Function/foo/bar.
El archivo de clase también puede colocarse en un archivo JAR registrado para la base de datos. El archivo JAR se registra mediante el procedimiento almacenado SQLJ.INSTALL_JAR. Este procedimiento almacenado se utiliza para asignar un ID de JAR a un archivo JAR. Este ID de JAR se utiliza para identificar el archivo JAR en el que reside el archivo de clase. Vea: Procedimientos SQLJ que manipulan archivos JAR, para obtener más información sobre SQLJ.INSTALL_JAR y sobre otros procedimientos almacenados para manipular archivos JAR.
5. Registrar la rutina en la base de datos.
Las rutinas SQL Java se registran en la base de datos utilizando las sentencias SQL CREATE PROCEDURE y CREATE FUNCTION. Estas sentencias contienen los siguientes elementos:
Palabras clave CREATE
Las sentencias SQL que crean una rutina SQL Java empiezan por CREATE PROCEDURE o por CREATE STATEMENT.
Nombre de la rutina
A continuación, la sentencia SQL identifica el nombre de la rutina conocido por la base de datos. Es el nombre utilizado para acceder a la rutina Java desde SQL.
Parámetros y valores de retorno
Luego, la sentencia SQL identifica los parámetros y los valores de retorno, si procede, de la rutina Java.
LANGUAGE JAVA
La sentencia SQL utiliza las palabras clave LANGUAGE JAVA para indicar que la rutina se escribió en Java.
Palabras clave PARAMETER STYLE
A continuación, la sentencia SQL identifica el estilo de parámetro mediante las palabras clave PARAMETER STYLE JAVA o PARAMETER STYLE DB2GENERAL.
Nombre externo
Entonces, la sentencia SQL identifica el método Java que hay que procesar como rutinas SQL Java. El nombre externo puede tener dos formatos:
• Si el método se encuentra en un archivo de clase ubicado en el directorio /QIBM/UserData/OS400/SQLLib/Function, se identifica mediante el formato nombreclase.nombremétodo, donde nombreclase es el nombre totalmente calificado de la clase y nombremétodo es el nombre del método.
• Si el método se encuentra en un archivo JAR registrado para la base de datos, se identifica mediante el formatojarid:nombreclase.nombremétodo, donde jarid es el ID de JAR del archivo JAR registrado, nombreclase es el nombre de la clase y nombremétodo es el
...