 |
|
 |
PL/SQL y Java
Otra de la virtudes de PL/SQL es que permite trabajar conjuntamente con Java.
PL/SQL es un excelente lenguaje para la gestion de información pero en ocasiones, podemos necesitar de un lenguaje de programación más potente. Por ejemplo podríamos necesitar consumir un servicio Web, conectar a otro servidor, trabajar con Sockets .... Para estos casos podemos trabajar conjuntamente con PL/SQL y Java.
Para poder trabajar con Java y PL/SQL debemos realizar los siguientes pasos:
- Crear el programa Java y cargarlo en la base de datos.
- Crear un program de recubrimiento (Wrapper) de PL/SQL.
Creacion de Objetos Java en la base de datos ORACLE.
ORACLE incorpora su propia versión de la máquina virtual Java y del JRE. Esta versión de Java se instala conjuntamente con ORACLE.
Para crear objetos Java en la base de datos podemos utilizar la uitlidad LoadJava de ORACLE desde linea de comandos o bien crear objetos JAVA SOURCE en la propia base de datos.
La sintaxis para la creación de JAVA SOURCE en ORACLE es la siguiente.
CREATE [OR REPLACE] AND COMPILE JAVA SOURCE NAMED <JavaSourceName> AS public class <className> {
<java code> ... };
|
El siguiente ejemplo crea y compila una clase Java OracleJavaClass en el interior de JAVA SOURCE FuentesJava. Un aspecto muy a tener en cuenta es que los métodos de la clase java que queramos invocar desde PL/SQL deben ser estaticos.
CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED FuentesJava AS public class OracleJavaClass { public static String Saluda(String nombre) { return ("Hola desde Java" + nombre); } } ;
|
Un mismo JAVA SOURCE puede contener varias clases de Java.
CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED FuentesJava AS public class OracleJavaClass { public static String Saluda(String nombre) { return ("Hola desde Java" + nombre); } }
public class OracleJavaMejorada { public static String SaludoMejorado(String nombre) { return ("Saludo mejorado desde Java para:" + nombre); } } ;
|
La otra opción sería guardar nuestro codigo java en el archivo OracleJavaClass.java, compilarlo y cargarlo en ORACLE con LoadJava.
A continuación se muestran ejemplos del uso de la utilidad LoadJava
loadJava -help
loadJava -u usario/password -v -f -r OracleJavaClass.class
loadJava -u usario/password -v -f -r OracleJavaClass.java |
Ejecución de programas Java con PL/SQL
Una vez que tenemos listo el programa de Java debemos integrarlo con PL/SQL. Esto se realiza a través de subprogramas de recubrimiento llamados Wrappers.
No podemos crear un Wrapper en un bloque anonimo.
La sintaxis general es la siguiente:
CREATE [OR REPLACE] FUNCTION|PROCEDURE <name> [(<params>,...)] [RETURN <tipo>] IS|AS LANGUAGE JAVA NAME '<clase>.<metodo> [return <tipo>]' ;
|
El siguiente ejemplo muestra el Wrapper para nuestra función Saludo.
CREATE OR REPLACE FUNCTION Saluda_wrap (nombre VARCHAR2) RETURN VARCHAR2 AS LANGUAGE JAVA NAME 'OracleJavaClass.Saluda(java.lang.String) return java.lang.String';
|
Una vez creado el wrapper, podremos ejecutarlo como cualquier otra funcion o procedure de PL/SQL. Debemos crear un wrapper por cada función java que queramos ejecutar desde PL/SQL.
Cuando ejecutemos el wrapper, es decir, la función "Saluda_wrap", internamente se ejecutará la clase java y se invocará el método estático "OracleJavaClass.Saluda". Un aspecto a tener en cuenta es que es necesario proporcionar el nombre del tipo java completo, es decir, debemos especificar java.lang.String en lugar de únicamente String.
SELECT SALUDA_WRAP('DEVJOKER') FROM DUAL;
|
La ejecución de este ejemplo en SQL*Plus genera la siguiente salida:
SQL> SELECT SALUDA_WRAP('DEVJOKER') FROM DUAL;
SALUDA_WRAP('DEVJOKER') ---------------------------------------------- Hola desde JavaDEVJOKER
|
Una recomendación de diseño sería agrupar todos los Wrapper en un mismo paquete.
En el caso de que nuestro programa Java necesitase de packages Java adicionales, deberiamos cargarlos en la base de datos con la utilidad LoadJava. |
| |
 |
Gracias
por
efagut
Respuesta recibida el [25/07/2007 02:58:59]
|
 |
Felicitaciones por tu tutorial, esta muy claro y es de gran utilidad.
|
| |
 |
Agradecimiento
por
Litio
Respuesta recibida el [26/07/2007 04:14:00]
|
 |
Excelente compendio de ORACLE, Muy buen aporte a los que estamos a la espera de nuevos conocimientos. Gracias.
|
| |
 |
Ayuda
por
Banny
Respuesta recibida el [29/08/2007 07:34:18]
|
 |
de todos los sitios que eh visitado para investigar lo concerniente a pl sql. Ahora estoy desarrolando un proyecto y quisiera un consejo, parte del proyecto y tal vez lo mas pesado es la carga de registros(unos 10 mil tegistros)a una base de datos comercial a en oracle, pero necesito que esta carga se dispare en una aplicacion web, eh investigado y quiero hacerlo en php pero supongo que este proceso sera muy lento, ahora me estoy animando por java, pero necesito saber cual es la mejor forma, lo mas importante para mi es la respuesta y que los datos se cargen correctamente. Gracias
|
| |
 |
Felicitaciones
por
Alberto
Respuesta recibida el [31/08/2007 08:47:42]
|
 |
Excelente y muy claro tutorial. Felicitaciones. Lo único que pediría es tener la posibilidad de poder bajarlos en Doc o PDF. Gracias
|
| |
 |
Lo siento ...
por
Devjoker
Respuesta recibida el [31/08/2007 03:21:15]
|
 |
Lo siento amigos, pero no publicamos los tutoriales en archivos, ni PDF ni DOC por varios motivos... 1. Los tutoriales están vivos, es decir, intentamos tenerlos actualizados y en constante evolución. 2. Queremos que visiteis la páginas, las visitas y los clicks en la publicidad es el único medio de financiación de devjoker. 3. Existen academias-empresas que proporcionan nuestros tutoriales (y los de otros muchos) como material de cursos por los que cobran un pastizal. Eso no nos gusta nada. En fin, sabemos que a muchos os gustaria disponer de las versiones de descarga de los tutoriales, pero lamentablemente no es posible ... Con el objetivo de "suavizar" el problema incluimos en cada página un enlace a "version para imprimir", que os permitirá imprimir el tutorial. Saludos DJK
|
| |
 |
GRACIAS
por
Cmonsier
Respuesta recibida el [02/09/2007 08:05:12]
|
 |
Hola. muchas gracias por compartir tus conocimientos. Soy menos que novato y me interesa aprender pl/sql. genial y denuevo gracias.
|
| |
 |
Perfecto
por
FLopez
Respuesta recibida el [20/09/2007 08:23:20]
|
 |
Muchas gracias Devjoker, es una gran ayuda para los que estamos comenzando con el lenguaje pl/sql, te felicito por el tutorial, muy explicado, conciso e interesante
|
| |
 |
Gracias
por
garraxxi
Respuesta recibida el [25/10/2007 07:31:14]
|
 |
Eso no más, gracias!!
|
| |
 |
Excelente Tutorial
por
Sabri
Respuesta recibida el [21/12/2007 11:57:50]
|
 |
Me parecio buenisimo el tutorial, realmente te felicito, y te agradezco sobre todo por incorporar ejemplos que ayudan mucho a afianzar los conceptos teoricos.
|
| |
 |
Muy bueno
por
Miguel
Respuesta recibida el [02/01/2008 09:43:15]
|
 |
Mi más sincera enhorabuena Pedro por este magnífico tutorial. Didáctico, sencillo y completo. Chapeau.
|
| |
 |
Gracias
por
Leo
Respuesta recibida el [10/01/2008 09:29:21]
|
 |
Trabajo como desarrollador de PL/SQL Oracle 9i y 10g y este tutorial me ha sido de gran utilidad, pues es muy completo y maneja un lenguaje muy sencillo ...muchas gracias
|
| |
 |
Felicitaciones
por
Andres.Alpina@gmail.com
Respuesta recibida el [20/01/2008 10:33:17]
|
 |
Este material me ayudo a solucionar varias inquietudes en la versión 10g de Oracle. Saludos
|
| |
 |
Muchas Gracias!!!
por
Barney el dinosaurio
Respuesta recibida el [25/01/2008 11:42:29]
|
 |
Estimado, mediante este comunicado le doy a conocer, mis más grandes admiración y gratitud por la sabiduria compartida, no sabes lo dificil que fue encontran un buen tutorial, pero este es excelente. muchas gracias nuevamente por pa pasiencia para desarrollar este tutorial totalmente amigable. Lo voy a estudiar y aplicar, asi que espero que cuando realice mis consultas (en el Foro por supuesto) me las respondas, de ante mano muchas gracias!!!
|
| |
 |
Excelente
por
jvalensa
Respuesta recibida el [30/01/2008 06:56:24]
|
 |
Muy buen documento, claro y a lo concreto, lo felicito porque el conocimiento se debe compartir
|
| |
 |
Ojala mas gente fuese como tu
por
Miguel
Respuesta recibida el [24/02/2008 03:58:00]
|
 |
Dando generosamente parte de tu tiempo en poner a disposición de todo el mundo el conocimiento que posees y haciendolo además de una manera clara y concisa, estas haciendo gala de una generosidad que te honra. Mi mas sinceras felicitaciones. Si el tiempo y la vida te lo permiten, sigue así.
|
| |
 |
Una consulta
por
Die
Respuesta recibida el [04/03/2008 08:04:48]
|
 |
Hola, los felicito, la verdad que el tutorial es buenísimo. Aprovecho también para hacer una consulta. Hasta ahora vi que cargan clases en la base con loadjava. Pero tengo entendido también que se pueden cargar archivos .jar. Lo que ando necesitando es poder ejecutar .jar desde una funcion PL/SQL almacenada en una base Oracle 9i. Requiere alguna configuración adicional, o el procedimiento sería similar.
|
| |
 |
consulta y gracias
por
julian nuñez
Respuesta recibida el [08/05/2008 05:03:02]
|
 |
Hola, gracias por el tutorial, te visitare mas veces para esa financiacion, que hoy dia es basica para vivir en la red de redes, te permita a ti a otros como tu proporcionar una ayuda importantisima para mucha gente.
Tengo una consulta. Para que la clase java que va dentro del procedimiento, utilice un jar externo a los de oracle (en concreto uno de mq) basta con incluir los import en ese procedimiento, y los jar a la carpeta de jar de oracle. o hay que hacer algo mas.
gracias de nuevo y saludos
|
| |
 |
Comentario
por
Eilyn
Respuesta recibida el [15/05/2008 11:13:57]
|
 |
Esta super completo el tutorial, mis felicitaciones.
|
| |
 |
Super de utilidad
por
Douglas_from_Nicaragua_AC
Respuesta recibida el [27/05/2008 06:27:29]
|
 |
hola que tal a todos los que han logrado llegar hasta aca. no hace mucho me empece a interesar en PL/sql. estoy descargando el tuturial, pero tengo una duda PL,SQL es parte de Oracle. o sea que oracle permite crear app y al mismo tiempo tiene su propia base de datos.?, gracias a todos y al Devjoker. por su inmenso aporte al conocimiento.
|
| |
 |
Duda
por
Luis Rocha
Respuesta recibida el [17/06/2008 12:08:11]
|
 |
A mi me quedo la duda de donde se manda al parametro al metodo saluda de java. SOlo veo que en la funcion de Oracle se hace mencion al metodo de java pero no veo donde se lo usa tal cual.
|
| |
 |
Gracias
por
Diego
Respuesta recibida el [04/07/2008 05:23:21]
|
 |
Gracias Pedro por este tutorial, me ha ayudado a mejorar en mi empresa. Un saludo.
|
| |
 |
picate el hoyo
por
favor
Respuesta recibida el [24/07/2008 10:18:20]
|
 |
jaja!!!
|
| |
 |
agregar linbrerias .jar
por
Alex
Respuesta recibida el [31/07/2008 09:20:40]
|
 |
Hola muy bueno el aporte que brindas a traves de esta web. Bueno mi consulta es como se puede agregar librerias adicionales a las nativas de java a oracle. A lo que sabia era solo copariarlas en la carpeta del LD_PATH_LIB. pero las copio y al momento de importarlas me dice que libreria no encontraba. O que pasos adicionales se debe realizar. Agradeceria mucho tu ayuda.
Saludos
Alex
|
| |
 |
Curso
por
jjvale
Respuesta recibida el [14/08/2008 09:59:39]
|
 |
Buenas noches. Como puedo recibir un vector de java en un cursor de oracle
|
| |
 |
oracle
por
service work
Respuesta recibida el [19/08/2008 09:44:46]
|
 |
hola eta muy bueno pero quisiera q pongas mas sobre base de datos asi como de DB2 My SQL y oracle con conexiones al visual net
|
| |
 |
Curso PL/SQL
por
Roxy
Respuesta recibida el [02/09/2008 04:37:07]
|
 |
Excelente el curso... Gracias por la aportación
|
| |
 |
Enhorabuena por el Tutorial, t...
por
Ignacio
Respuesta recibida el [16/09/2008 10:25:09]
|
 |
Enhorabuena por el Tutorial, te lo has currado, y esta bastante bien.
|
| |
 |
Gracias
por
Ani
Respuesta recibida el [29/09/2008 07:48:46]
|
 |
Exelente material. Muchas Gracias por subirlo y tormarte el tiempo
|
| |
 |
Que pasa con los datos tipo date??
por
Laurita
Respuesta recibida el [10/10/2008 10:57:41]
|
 |
Cuando quiero enviar como parametro un tipo DATE se utiliza java.lang.Date????
|
| |
 |
carter
por
weffer
Respuesta recibida el [11/10/2008 10:42:39]
|
 |
esta super cool es muy util la informacion
|
| |
 |
el mejor tutorial que he visto de PL/SQL!
por
DMR
Respuesta recibida el [13/10/2008 01:18:11]
|
 |
Muchas gracias.
|
| |
 |
Buen trabajo
por
xphantom
Respuesta recibida el [13/01/2009 02:50:21]
|
 |
Dediqué este día a darle una ojeada a este tutorial porque pronto tendré que trabajar con Oracle. Sin lugar a dudas me sacará de apuros muchas veces porque sale prácticamente todo lo que aprendí al respecto en la universidad y también los tópicos que no alcanzamos a tocar en su momento.
Thank you so much indeed!!
|
| |
 |
ResultSet
por
Carolina
Respuesta recibida el [15/01/2009 03:48:34]
|
 |
Hola!!! He estado buscando en foros una duda que tengo y anda que encuentro solucion. Hice el mismo ejemplo de esta pagina, pero puse a que la clase java retornara un resultset. En la funcion wraper porque tipo de dato puedo reeemplazar el VARCHAR2?
|
| |
 |
Felicitaciones
por
Ronald
Respuesta recibida el [20/02/2009 10:23:41]
|
 |
GRacias por dedicar tu tiempo a este tutorial.
Muchas Gracias. Lo voy a recomendar
|
| |
 |
Muy util
por
Jorge
Respuesta recibida el [26/02/2009 12:54:16]
|
 |
Muchas gracias por el tutorial es sencillo y facil de entender... Esta parte de incorporar java al pl/sql es muy util...
|
| |
 |
Interesante
por
Victor
Respuesta recibida el [03/03/2009 11:39:58]
|
 |
No sé de Oracle 10g, ya q me parecia algo dificil de entender, pero el tutorial presente me ha dado ideas claras y basicas de lo q es el Oracle. Gracias
|
| |
 |
Genial
por
Ciro
Respuesta recibida el [03/03/2009 11:46:07]
|
 |
Este tutorial esta interesante. Tal ves pida mucho, pero ¿Seria posible que continues mas acerca de esta parte?(Trabajar Oracle incluyendo a Java, es un tutorial muy didactico en su explicacion...especialmente para novatos como yo)...
|
| |
 |
tu puta madre
por
chile
Respuesta recibida el [18/03/2009 02:26:19]
|
 |
jodeis todos ustedes perros de mierda
|
| |
 |
Felicitaciones
por
Guillo.net
Respuesta recibida el [21/03/2009 03:56:21]
|
 |
Excelente, todo se explica muy bien. Gracias
|
| |
 |
Del Carajo
por
Alverth Rivers
Respuesta recibida el [23/03/2009 01:59:31]
|
 |
Este tutorial me ha dado la luz para orientarme en la programación pl/sql. Gracias a su autor.
|
| |
 |
Felicidades
por
Mario Ucán
Respuesta recibida el [21/05/2009 10:15:26]
|
 |
Me ha servido de mucho tu tutorial, tienes ese magnífico don de enseñar aún en este medio tan dificil como Internet, no cualquiera, en verdad Felicidades me atrevo a llamarte Maestro.
|
| |
 |
Buen trabajo
por
Junior 4 Ever
Respuesta recibida el [05/06/2009 10:21:47]
|
 |
Acabo de leer todo el tutorial, me llevo 1 dia y medio. Yo soy medianamente nuevo en esto, y en PL estoy de 0, y este tutorial me sirvio para ver con que me enfrento, me gusto mucho lo sencillo que hiciste cada capitulo. Felicidades.
|
| |
 |
metemelo
por
atras
Respuesta recibida el [18/06/2009 11:52:38]
|
 |
jajaja!!
|
| |
 |
gracias
por
german
Respuesta recibida el [08/07/2009 12:31:04]
|
 |
muy buen tutorial gracias es lo primero ue leo de pl-sql y lo encontre muy entendible
|
| |
 |
Gracias
por
arielarmando
Respuesta recibida el [28/07/2009 12:40:00]
|
 |
Es muy bueno el Curso. Felicitaciones.
|
| |
 |
Excelente tutorial
por
PatS
Respuesta recibida el [04/08/2009 05:37:08]
|
 |
Este tutorial es excelente, antes no había este tipo de documentación y tan accesible (queri decir en español y en internet), Gracias por crearlo! Buscaré mas tutoriales tuyos.
|
| |
 |
gracias y preguntica
por
sofiamend
Respuesta recibida el [08/09/2009 04:40:20]
|
 |
esta muy chevere el tutorial pero como se agregan los jar o librerias adiconales?
|
| |
 |
zerega
por
luiggy
Respuesta recibida el [10/09/2009 11:18:02]
|
 |
hola, interesante y buen tutorial, quisiera ver si me pueden ayudar, tengo imaginando un select * from tabla, cargar esos datos en una clase java en mi pl/sql, debo crear una conexion o hay forma de hacerlo directo ya q esta ahi mismo dentro del PL/sql
|
| |
 |
Pregunta
por
Mònica
Respuesta recibida el [06/10/2009 09:33:10]
|
 |
Espero que me pudiesen auxiliar con lo siguiente: *Cual es la estadistica de nivel de utilizaciòn de JAVA y su relaciòn con ORACLE. Gracias.
|
| |
 |
Saludos estimado, quisiera sab...
por
Anonimo
Respuesta recibida el [10/10/2009 03:14:01]
|
 |
Saludos estimado, quisiera saber si es posible ejecutar desde una clase de java una funcion y/o proceso de oracle que me regrese un objeto de tipo java, esto con el fin de ejecutar una funcion y/o proceso de (plsql en la base de datos) y obtener un objeto de java compatible esto para tenerlo ya en mi clase de persistencia oviamente esta clase fuera de la base de datos. saludos
|
| |
 |
Gracias
por
Jordi
Respuesta recibida el [30/10/2009 05:51:58]
|
 |
Me ha venido de maravilla para repasar y ampliar aspectos del lenguaje PL/SQL. Gran trabajo Pedro.
|
| |
 |
error al realizar el select
por
JOSE
Respuesta recibida el [10/12/2009 03:51:39]
|
 |
Buena tarde me guta el PL y estaba probando su ejemplo pero me sale el siguiente error ora-06575 Package or funtion SALUDA_WRAP is in invalid state
Cause: A SQL statement references a PL/SQL funtion that is in an invalid state. Oracle attempted to compile the function for syntax error incorrectly assigned, or missing, privileges for a referencesd object
me pueden colaborar, gracias
|
| |
 |
TUNNING EN ORACLE
por
ANDRES ALDANA
Respuesta recibida el [17/01/2010 08:33:41]
|
 |
Felicitaciones por esta página web. Pienso que es necesario completarla con aquellos "trucos" que se deben tener en cuenta en el código de programación para mejorar el rendimiento. He leido algunos Pero faltan otros.
|
| |
 |
Excelente
por
Int21
Respuesta recibida el [08/02/2010 10:20:52]
|
 |
Felicitaciones, con este tutorial salve el dia laboral, habia unas instrucciones que necesita correr en oracle que PL/SQL no me proporcionaba, y por medio de esto pude resolver JAVA+PL/SQL excelente! 10pts
|
| |
 |
Gracias!
por
Agustín
Respuesta recibida el [10/02/2010 09:02:57]
|
 |
Confirme que: “Cuanto más sabes, más te das cuenta de que no sabes nada” Muchas gracias
|
| |
 |
pl/sql pakage adf
por
Rodolfo nava
Respuesta recibida el [05/03/2010 02:57:19]
|
 |
Hola mepodrian ayudar no se de que forma poder utilizar un paquete de mi base de datos con adf seria de gran utilidad algun ejemplo gracias
|
| Añadir comentario ... |
Para preguntar utiliza los foros
|
|

|
PL/SQL y Java |
|
Autor:
Pedro Herrarte Sánchez
|
|
Visitas:
57023 |
Fecha de publicación:
26/07/2006 |
Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultoría, análisis, desarrollo y formación.
Posee mas de diez años de experiencia trabajando para las principales empresas de España.
Es especialista en tecnologías .NET, entornos Web, bases de datos (SQL Server y ORACLE) e integración de sistemas.
Es experto en desarrollo (C#, ASP.NET, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE).
Es fundador, diseñador y programador de www.devjoker.com. |
|
|
Visitas:
98
|
Comentarios:
2
|
Archivo:
Articulos
|
Visitas:
798
|
Comentarios:
2
|
Archivo:
Articulos
|
Visitas:
753
|
Comentarios:
3
|
Archivo:
Articulos
|
Visitas:
659
|
Comentarios:
2
|
Archivo:
Articulos
|
Visitas:
3158
|
Comentarios:
2
|
Archivo:
Articulos
|
Visitas:
14520
|
Comentarios:
7
|
Archivo:
Articulos
|
Visitas:
1484
|
Comentarios:
3
|
Archivo:
Articulos
|
|
Visitas:
692
|
Comentarios:
2
|
Archivo:
Articulos
|
|
Visitas:
369
|
Comentarios:
0
|
Archivo:
Articulos
|
Visitas:
2022
|
Comentarios:
2
|
Archivo:
Articulos
|
|
|
 |
|
 |