InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosEmail
Tutorial PL/SQL
Introducción a PLSQL
Programación con PL/SQL
Fundamentos de PL/SQL
Tipos de datos en PL/SQL
Operadores en PL/SQL
Estructuras de control en PL/SQL
Bloques PL/SQL
Cursores en PL/SQL
Cursores Implicitos en PL/SQL
Cursores Explicitos en PL/SQL
Cursores de actualización en PL/SQL
Excepciones en PL/SQL
Excepciones personalizadas en PL/SQL
Propagacion de excepciones en PL/SQL
Subprogramas en PL/SQL
Procedimientos almacenados en PL/SQL
Funciones en PL/SQL
Triggers en PL/SQL
Subprogramas en bloques anónimos
Paquetes en PL/SQL
Registros PL/SQL
Tablas PL/SQL
Tipo VARRAY
BULK COLLECT
Transacciones con PL/SQL
Transacciones autónomas
SQL Dinamico
Funciones integradas de PL/SQL
Secuencias
PL/SQL y Java
También puedes ver ...
Excepciones personalizadas en PL/SQL
Como conectar a ORACLE con Java
Recuperar datos BLOB de ORACLE
Trabajar con datos de tipo BLOB en ORACLE
Secuencias
Transacciones autónomas
SQL Dinamico
Funciones integradas de PL/SQL
Transacciones con PL/SQL
Tipo VARRAY

Afiliados
La Web del programador
MundoProgramacion


Inicio | Tutorial PL/SQL SecuenciasTutorial PL/SQL Versión para imprimir

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.


Inicio | Tutorial PL/SQL SecuenciasTutorial PL/SQL Versión para imprimir Foros de consulta

 
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.


Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



Inicio | Tutorial PL/SQL SecuenciasTutorial PL/SQL Versión para imprimir

PL/SQL y Java
Autor: Pedro Herrarte Sánchez
Visitas: 22911 Fecha de publicación: 26/07/2006
Pedro Herrarte, es consultor tecnológico en nCapas Software(empresa de la que además es fundador), donde realiza tareas de consultoría, análisis y desarrollo.

Ha trabajado con muchas tecnologías ... SQL Server, T-SQL, ORACLE, PL/SQL, ASP.NET, ASP, CGI , C#, C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...

Es especialista en tecnologías .NET, entornos Web, y bases de datos, especialmente SQL Server y ORACLE.

Es fundador, diseñador y programador de www.devjoker.com.



devjoker  Lo más nuevo ... Donde se habla ... 
03/04/2008 LINQ con métodos Extensores y expresiones lambda    forma parte de...Métodos extensores
03/04/2008 Métodos Extensores: SELECT    forma parte de...Métodos extensores
03/04/2008 Almacenamiento (1)    forma parte de...Tutorial de Sistemas Informaticos
28/03/2008 Mapa de configuracion de WCF
28/03/2008 LinQ To SQL - Un ejemplo sencillo
25/03/2008 Sitios Web de ejemplo ASP.NET
22/03/2008 Problemas al conectar a redes wifi con Windows Vista
19/03/2008 Service Pack 1 de Windows Vista

Útimos temas recibidos en los foros ...
Insertar datos en un grid manualmente por flakita ... [C#] 0 09/04/2008
ayuda con un select por Manu ... [mySQL] 8 25/07/2007
CHASIS DE UN PC CUALQUIERA por carolina ... [WIN 98/NT/2000/XP] 5 23/11/2006
Q PASA JENTE por torrichi ... [Java] 2 25/03/2008
LLINQ to SQL por Javier ... [C#] 1 09/04/2008
Agendar tarea por dia pero q pueda ser a diferente hora cada dia por Orlan ... [C#] 1 09/04/2008
Ventana Popup por Maurito22 ... [ASP.NET] 1 31/03/2008
No se puede abrir el archivo fisico por ron ... [C#] 1 07/04/2008
Data report visual basic 6.0 impresion con codigo por Andres ... [Visual Basic 6.0] 8 19/11/2007
Como abrir un docuemto de word desde c# y leer las palabras para luego enviar a access por llen ... [C#] 1 08/04/2008
sentencia for por .net ... [C#] 2 08/04/2008
Leer campos blob de oracle en lenguaje visual basic por janito ... [Visual Basic 6.0] 0 08/04/2008

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
22/10/2005 Insertar datos. INSERT    forma parte de...Tutorial SQL
24/05/2007 Tipos de datos en Transact SQL    forma parte de...Tutorial de Transact SQL
12/01/2006 Programación con PL/SQL    forma parte de...Tutorial PL/SQL
16/10/2006 Delegados y eventos    forma parte de...Tutorial C#
14/05/2007 Fundamentos de Transact SQL    forma parte de...Tutorial de Transact SQL
31/03/2006 Operadores en PL/SQL    forma parte de...Tutorial PL/SQL
11/09/2006 Trabajar con datos de tipo BLOB en ORACLE
12/01/2006 Introducción a PLSQL    forma parte de...Tutorial PL/SQL
20/03/2008 Funciones integradas de Transact SQL (I)    forma parte de...Tutorial de Transact SQL
28/08/2006 Ubuntu en VmWare con VMware Tools

 

Encuesta
¿Cual es tu lenguaje de programación favorito?
[Ver] [Votar]