Execute Java programs from PL/SQL

O Oracle provê a opção de trabalharmos com classes Java dentro do banco de maneira nativa. Diferente de executar programas em C no Oracle(Farei um post sobre isto ainda), as classes Java são armazenadas dentro do banco, como schema objects.

Para se armazenar essas classes dentro do banco, o Oracle tem uma ferramenta chamado loadjava.

Antes de fazer o uso do loadjava, vamos criar a seguinte classe no servidor aonde está os binários do Oracle e depois compilar essa classe.

public class Hello
{
  public static String world()
  {
    return "Hello world";
  }
}
$ javac Hello.java

Após criar o arquivo com a classe, .java, é compilada e gera um outro arquivo, .class. Após esses passos terem sidos executados, podemos carregar essa classe compilada para o banco com o utilitário loadjava.

$ loadjava -user system Hello.class

Password:
*******                
$

Feito isto, a nossa classe já se encontra no Oracle, podemos verificar isto consultando os objetos criados. Consultando a tabela _objects

$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Wed Dec 26 10:31:21 2018

Copyright (c) 1982, 2016, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> column OBJECT_NAME format a30
SQL> column OBJECT_TYPE format a10
SQL> SELECT object_name, object_type
  2  FROM   dba_objects
  3  WHERE  TRUNC(created) = TRUNC(SYSDATE);

OBJECT_NAME                    OBJECT_TYP
------------------------------ ----------
CREATE$JAVA$LOB$TABLE          TABLE
SYS_C0010758                   INDEX
SYS_IL0000076636C00002$$       INDEX
SYS_LOB0000076636C00002$$      LOB
Hello                          JAVA CLASS

SQL>

Uma outra opção que também existe, é de importar o arquivo não compilado, o .java. Neste caso, além o objeto tipo JAVA CLASS, teria também o JAVA SOURCE no Oracle, e o fonte desse Java poderia ser consultado na tabela dba_source.

Vamos agora publicar esse método Java em uma function e testar o seu funcionamento.

SQL> CREATE OR REPLACE FUNCTION system.fn_java_test
  2  RETURN VARCHAR2
  3  AS LANGUAGE JAVA
  4  NAME 'Hello.world () return java.lang.String';
  5  /

Function created.

SQL> SELECT system.fn_java_test FROM DUAL;

FN_JAVA_TEST
---------------------------------------------------------------------
Hello world

SQL>

Existe um outro método para se criar uma classe Java dentro do Oracle, que não necessita do arquivo físico no servidor e nem o uso do utilitário loadjava. Podemos criar um JAVA SOURCE como se fosse qualquer outro objeto no banco. Veja o exemplo abaixo:

CREATE OR REPLACE JAVA SOURCE NAMED system.soma AS

public class Soma {

  public static int somar (int x, int y) {
  
    return x+y;
  }

}

CREATE OR REPLACE FUNCTION system.FN_SOMAR(p_x NUMBER, p_y NUMBER) RETURN NUMBER AS
    LANGUAGE JAVA NAME 'Soma.somar(int,int) return int';

SQL> SELECT system.FN_SOMAR(10,15)
  2  FROM   dual;

SYSTEM.FN_SOMAR(10,15)
----------------------
                    25

Bem, este foi mais um tópico para a prova OCP PL/SQL. Em breve irei postar como executar programas externos na linguagem C, que é bem mais complicado mas é um tópico da prova.

Anúncios

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE Associate por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Marcado com: , ,
Publicado em PL/SQL

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Esse Blog é reconhecido pela
Certificações
Sou articulista

Clique para seguir este blog e receber notificações via email de novos posts.

Tércio Costa

Tércio Costa

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE Associate por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Links Pessoais

Serviços verificados

Visualizar Perfil Completo →

Total de Visualizações da Página
  • 138.077 Visualizações
%d blogueiros gostam disto: