Rutinas SQL Java
ninizExamen14 de Junio de 2013
3.743 Palabras (15 Páginas)625 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 nombre del método.
Se puede utilizar System i Navigator para crear un procedimiento almacenado o una función definida por usuario que emplee el estilo de los parámetros Java.
6. Utilizar el procedimiento Java
Para llamar a un procedimiento almacenado Java se utiliza la sentencia SQL CALL. La UDF Java es una función a la que se llama como parte de ora sentencia SQL.
• Configurar el sistema para que utilice SQLJ
Antes de ejecutar un programa Java que contenga sentencias SQLJ intercaladas, no olvide configurar el servidor para que dé soporte a SQLJ. El soporte de SQLJ requiere que modifique la variable de entorno CLASSPATH para el servidor.
Procedimientos almacenados Java
Cuando se utiliza Java™ para escribir procedimientos almacenados, se pueden utilizar dos estilos posibles para pasar parámetros.
El estilo recomendado es el de los parámetros de JAVA, que coincide con el estilo especificado en el estándar de rutinas SQLj: SQL. El segundo estilo, DB2GENERAL, está definido por DB2 UDB. El estilo de los parámetros también determina los convenios que hay que utilizar al codificar un procedimiento almacenado Java.
Además, también tener presentes algunas restricciones que se aplican a los procedimientos almacenados Java.
• Estilo de los parámetros de JAVA
Al codificar un procedimiento almacenado Java que utilice el estilo de los parámetros de JAVA, debe ajustarse a estos convenios.
• Estilo de los parámetros de DB2GENERAL
Al codificar un procedimiento almacenado Java que utilice el estilo de los parámetros de DB2GENERAL, debe ajustarse a estos convenios.
• Restricciones de los procedimientos almacenados Java
Estas restricciones se aplican a los procedimientos almacenados Java.
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.
Al igual que los procedimientos almacenados Java, las funciones escalares Java utilizan uno de los dos estilos de parámetro, Java y DB2GENERAL. Cuando escriba el código de una función definida por usuario (UDF) Java, debe tener presentes las restricciones que afectan a la la creación de funciones escalares Java.
Estilo de parámetro Java
El estilo de los parámetros Java es el especificado por el estándar SQLJ Part 1: SQL Routines. Cuando escriba el código fr una UDF Java, siga estos convenios.
• El método Java debe ser público estático.
• El método Java debe devolver un tipo compatible con SQL. El valor de retorno es el resultado del método.
• Los parámetros del método Java deben ser tipos compatibles con SQL.
• El método Java podría comprobar la presencia de un SQL NULL para
...