Impressao de Boleto Bancario com codigo de barras

Perguntas relacionadas a questões técnicas do Oracle EBS. Criação de Concorrentes, Value Sets, Alerts, Forms Personalizations, Configurações, etc
Responder
marlonpasquali
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 248
Registrado em: Sex, 06 Fev 2009 3:02 pm
Localização: ERECHIM - RS

Bom dia amigos,
Trabalho com Oracle Applications 11i (Forms e Reports, PLSQL) e estou estudando para desenvolver a impressao de boleto bancario para Banco do Brasil em impressora Laser , com codigo de barras. Nosso servidor é Linux RedHat.
Tenho muitas duvidas, se alguém puder me ajudar.
- Tem que instalar uma fonte para o codigo de barras no servidor ?
- Que fonte é esta ?
- No cadastro do concurrent, que formato coloco? PDF, PCL ?
- Qual o estilo ? A4, LandWide ?
- Tem que setar algo no parametro DESFORMAT no report ?
alguém pode me dar uma dica por favor.
Muito obrigado,
Marlon
alexrsilva
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 153
Registrado em: Ter, 27 Mai 2008 1:31 pm
Localização: Rio de Janeiro - RJ
Alex Silva
Analista de Sistemas
11i.10 Applications Developer Implementation Champion
11i.10 E-Business Suite Integration Champion

Marlon,
Bom dia.
Nós fizemos uma implementação de boleto que utiliza o código de barras.
Temos um jsp(Java Stored Procedure) que gera o código de barras.
Ele retorna uma imagem onde, no reports você posiciona segundo o layout do banco do brasil.
Procura no glufke por um tópico chamado Boleto Bancário.

Atenciosamente,
Avatar do usuário
madmax
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 293
Registrado em: Qua, 13 Dez 2006 5:02 pm
Localização: São Paulo
Contato:
________________________________
Douglas - Madmax.

Pessoal.

Preciso fazer um Relatorio de Etiquetas com codigo de barras, e uma amiga me informou que deve ser cadastrada a pasta de códigos de barras em algum lugar. ???

Tendo isto, é só desenhar o campo no report, e escolher a fonte correta.

alguém já fez isso ?

A fonte do codigo de barras e Bcode128.ttf

Qualquer dica e valida.

Abs.
alexrsilva
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 153
Registrado em: Ter, 27 Mai 2008 1:31 pm
Localização: Rio de Janeiro - RJ
Alex Silva
Analista de Sistemas
11i.10 Applications Developer Implementation Champion
11i.10 E-Business Suite Integration Champion

Desculpa Douglas,
Cadastrar a pasta de código de barras?
ela deve ter falado sobre esse arquivo Link

ou outro link.
Dá uma olhada aqui Também.

Atenciosamente,
Avatar do usuário
madmax
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 293
Registrado em: Qua, 13 Dez 2006 5:02 pm
Localização: São Paulo
Contato:
________________________________
Douglas - Madmax.

Grande Alex.

Valeu vou dar uma olhada sim.

Abs..
marlonpasquali
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 248
Registrado em: Sex, 06 Fev 2009 3:02 pm
Localização: ERECHIM - RS

Alex,
Seria muito dificel você me enviar exemplo desse report e dessa rotina Java. não tenho experiencia neste tipo de desenvolvimento e tenho ainda muitas duvidas. Se não for te causar nenhum incômodo é claro.... de qualquer forma agradeço pelas dicas.

obrigado,
Marlon
e-mail:
marlon.pasquali@peccin.com.br
alexrsilva
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 153
Registrado em: Ter, 27 Mai 2008 1:31 pm
Localização: Rio de Janeiro - RJ
Alex Silva
Analista de Sistemas
11i.10 Applications Developer Implementation Champion
11i.10 E-Business Suite Integration Champion

depois de adicionado o jbars no oracle, compila esse código

Selecionar tudo

create or replace and compile java source named barcode as
import java.io.*;
import javax.swing.*;
import org.jbars.*;
import java.awt.image.*;
import java.awt.*;
import oracle.sql.*;
import oracle.jdbc.*;
class Barcode {
	public Barcode() {
		super();
	}
public static BLOB code(String code,String type, String sizeY) throws java.sql.SQLException, Exception{
    OracleConnection conn = (OracleConnection) new OracleDriver().defaultConnection();
    conn.setAutoCommit(false);
    BLOB blob = BLOB.createTemporary(conn, true, BLOB.DURATION_SESSION);
		String imageFormat = Barcode.JPG;
		String quietZone = null;
		// Create Barcode
		Barcode barcode = null;
		if (type.equalsIgnoreCase("CODE128")) {
			barcode = new Barcode128();
		}
		if (type.equalsIgnoreCase("CODE93")) {
			barcode = new Barcode93();
		}
		if (type.equalsIgnoreCase("INTER25")) {
			barcode = new BarcodeInter25();
		}
		if (barcode == null) {
			System.out.println("Unknow barcode type: " + type);
			System.exit(1);
		}
                Color barColorColor;
                        barColorColor = Color.black;
                Color textColorColor;
                        textColorColor = Color.black;
                double angle = 0;
                barcode.setFontSize(10);
		barcode.setTextAlignment(Barcode.ALIGN_CENTER);
		barcode.setCode(code);
			byte[] file=null;
			if(imageFormat.equals(Barcode.PNG)){
				file= barcode.createPNG(Integer.parseInt(sizeY),
					barColorColor, textColorColor, angle);
			}
			else if(imageFormat.equals(Barcode.JPG)){
				file= barcode.createJPG(Integer.parseInt(sizeY),
						barColorColor, textColorColor, angle);
			}
			else{
				System.out.println("Unknow image format: " + imageFormat);
				System.exit(1);
			}
			//FileOutputStream os = new FileOutputStream(new File(fileName));
                        OutputStream os = blob.getBinaryOutputStream();
			os.write(file);
			os.flush();
			os.close();
           return blob;
	}
}
pode chamá-lo assim

Selecionar tudo

FUNCTION generate_barcode( p_code IN VARCHAR2  -- Números do código de barras
                                  , p_tipo IN VARCHAR2  --'CODE128','CODE93' ou 'INTER25'
                                                       --passe CODE128
                                  , p_size IN VARCHAR2 -- Tamanho da imagem, eu utilizo 50
         ) RETURN BLOB
AS LANGUAGE JAVA NAME 'Barcode.code(java.lang.String, java.lang.String,java.lang.String ) return oracle.sql.BLOB';
ele retorna a imagem do código de barras.
senger
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 9
Registrado em: Sex, 16 Abr 2010 5:19 pm
Localização: SC

E como é que faz para chamar a função e incluir a imagem no report (generate_barcode) no reports6i, pois é campo do tipo blob?
alexrsilva
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 153
Registrado em: Ter, 27 Mai 2008 1:31 pm
Localização: Rio de Janeiro - RJ
Alex Silva
Analista de Sistemas
11i.10 Applications Developer Implementation Champion
11i.10 E-Business Suite Integration Champion

na época foi gravada a imagem em campo da tabela do boleto do tipo blob.
Na query do reports, busca esse dado.
Depois coloca um campo do tipo binary lob e a origem o campo na sua query.

Atenciosamente,
senger
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 9
Registrado em: Sex, 16 Abr 2010 5:19 pm
Localização: SC

Obrigado pela resposta...

Quando eu executo via SQLplus ou no reports:

ERROR at line 2:
ORA-29532: Java call terminated by uncaught Java exception: java.lang.NullPointerException

Eu utilizei os loadjava e ficou assim:
org/jbars/Barcode128
org/jbars/Barcode
org/jbars/Barcode93

e criei a barcode2.java...com o codigo que você postou aqui. É assim que se faz ? O que poderia estar errado.

Obrigado.
senger
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 9
Registrado em: Sex, 16 Abr 2010 5:19 pm
Localização: SC

Alguém conseguiu implementar no oracle 9 ?
==
Quando vai executar da erro nas linhas do tipo:

Selecionar tudo

setFont(new Font("Helvetica", Font.PLAIN, 20));  
e

Selecionar tudo

Graphics2D g = (Graphics2D) image.createGraphics();
O erro é o seguinte: ORA-29532:
Java call terminated by uncaught Java exception: java.lang.NullPointerException
Quando eu comentei a linha que define a fonte por exemplo passou, mas mais adiante deu erro na linha ref. ao Graphics2D
alexrsilva
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 153
Registrado em: Ter, 27 Mai 2008 1:31 pm
Localização: Rio de Janeiro - RJ
Alex Silva
Analista de Sistemas
11i.10 Applications Developer Implementation Champion
11i.10 E-Business Suite Integration Champion

Estou fazendo um tutorial e mandar para o admin postar aqui.
Estou com um banco 10g. Mas não tem diferença do 10 para o 9 em relação ao java.
rcd_tech@hotmail.com
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 42
Registrado em: Qui, 08 Set 2011 1:13 pm
Localização: SP

Alex,

Como eu falo para adicionar as bibliotecas JBARS no oracle.

Para assim criar uma procedure para gerar o código de barra para o meu boleto.

Com muito esforço consegui implementar meio que por cima os algoritmos para geração do código de barras (numeração) e linha digitável (numeração).

Agora precisa gerar a imagem do código de barras para o boleto que eu desenhei no Reports.

Baixei a biblioteca JBARS só não sei como adicionar no banco isso para poder usar.

Poder me dar umas dicas?

att,
Ricardo Miranda
rcd_tech@hotmail.com
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 42
Registrado em: Qui, 08 Set 2011 1:13 pm
Localização: SP

ninguém?
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

procura por loadjava

esse utilitario carrega o .jar ou .class pro banco.

:D
vagner.rigo
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Ter, 27 Set 2011 8:00 pm
Localização: Assis - SP

Boa noite,

Estou com duvidas no desenvolvimento de codigo de barras para o banco Itau, vi no forum que você implementou utilizando jsp, se possivel poderia me mandar e me adicionar no msn para troca de informações.


Alex segue meu email:

vagner.rigo@hotmail.com


Abraço
Avatar do usuário
bessa_lucas
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 55
Registrado em: Sex, 17 Out 2014 3:02 pm
Lucas Bessa
Analista de Sistemas

lucas.bessa@obers.com.br
lucas.bessa.ti@gmail.com

Pessoal,

Também estou precisando de desenvolver o boleto do banco Itau no report6i.
Na verdade eu já tenho mas estou com problemas para gerar o pdf com a fonte code 2/5 Interleaved.

Alguém pode me enviar essas dicas?
lucas.bessa@obers.com.br
Avatar do usuário
bessa_lucas
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 55
Registrado em: Sex, 17 Out 2014 3:02 pm
Lucas Bessa
Analista de Sistemas

lucas.bessa@obers.com.br
lucas.bessa.ti@gmail.com

Olá pessoal,

Depois da ajuda do Alex Silva, consegui criar uma classe no java e gerar o arquivo hexadecimal, a partir disso eu transformo ele em raw para gerar ele na tela.

Gerei o Hexadecimal no netbeans e executei os outros procedimentos no Report6i, o problema é na hora de rodar o ultimo método "getHex" ele tem a comparação ("e" comercial) que não consegui ainda uma alternativa.

Selecionar tudo

create or replace and compile java source named GerarBarcode as
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */


import org.jbars.*;
import java.awt.*;
import java.io.*;
import java.sql.Blob;

class GerarBarcode {

    public GerarBarcode() {
        super();
    }
    
    public String code(String codigo, String type, String sizeY,String extensao) throws java.sql.SQLException, Exception {

        Blob blob = null;
        byte[] file = null;

        String imageFormat = "barcode128.JPG";

        if (type.equalsIgnoreCase("CODE128")) {
            Barcode128 barcode128 = new Barcode128();

            Color barColorColor;
            barColorColor = Color.black;
            Color textColorColor;
            textColorColor = Color.black;
            double angle = 0;

            barcode128.setFontSize(10);
            barcode128.setTextAlignment(barcode128.ALIGN_CENTER);
            barcode128.setCode(codigo);

            if (imageFormat.equals("barcode128.PNG")) {
                file = barcode128.createPNG(Integer.parseInt(sizeY),
                        barColorColor, textColorColor, angle);
            } else if (imageFormat.equals("barcode128.JPG")) {
                file = barcode128.createJPG(Integer.parseInt(sizeY),
                        barColorColor, textColorColor, angle);
            } else {
                System.out.println("Unknow image format: " + imageFormat);
                System.exit(1);
            }

        }
        
        if (type.equalsIgnoreCase("CODE93")) {
            Barcode93 barcode93 = new Barcode93();

            Color barColorColor;
            barColorColor = Color.black;
            Color textColorColor;
            textColorColor = Color.black;
            double angle = 0;

            barcode93.setFontSize(10);
            barcode93.setTextAlignment(barcode93.ALIGN_CENTER);
            barcode93.setCode(codigo);

            if (imageFormat.equals("barcode93.PNG")) {
                file = barcode93.createPNG(Integer.parseInt(sizeY),
                        barColorColor, textColorColor, angle);
            } else if (imageFormat.equals("barcode93.JPG")) {
                file = barcode93.createJPG(Integer.parseInt(sizeY),
                        barColorColor, textColorColor, angle);
            } else {
                System.out.println("Unknow image format: " + imageFormat);
                System.exit(1);
            }

        }
        
        if (type.equalsIgnoreCase("INTER25")) {
            BarcodeInter25 barcode25 = new BarcodeInter25();

            Color barColorColor;
            barColorColor = Color.black;
            Color textColorColor;
            textColorColor = Color.black;
            double angle = 0;

            barcode25.setFontSize(10);
            barcode25.setTextAlignment(barcode25.ALIGN_CENTER);
            barcode25.setCode(codigo);

            if (imageFormat.equals("barcode25.PNG")) {
                file = barcode25.createPNG(Integer.parseInt(sizeY),
                        barColorColor, textColorColor, angle);
            } else if (imageFormat.equals("barcode25.JPG")) {
                file = barcode25.createJPG(Integer.parseInt(sizeY),
                        barColorColor, textColorColor, angle);
            } else {
                System.out.println("Unknow image format: " + imageFormat);
                System.exit(1);
            }

        }
                
                
        GerarBarcode conversor = new GerarBarcode();
        String retorno = conversor.getHex(file);

        return retorno;
    }
    
    
    public String getHex(byte[] raw) {
        String HEXES = "0123456789ABCDEF";
        if (raw == null) {
            return null;
        }
        final StringBuilder hex = new StringBuilder(2 * raw.length);
        for (final byte b : raw) {
            hex.append(HEXES.charAt((b & 0xF0) >> 4))
                    .append(HEXES.charAt((b & 0x0F)));
        }
        return hex.toString();
    }

}

Avatar do usuário
bessa_lucas
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 55
Registrado em: Sex, 17 Out 2014 3:02 pm
Lucas Bessa
Analista de Sistemas

lucas.bessa@obers.com.br
lucas.bessa.ti@gmail.com

Pessoal atualização do código.

Vi que gerar em Hexadecimal pra mim não foi uma boa escolha.

Agora gero ele em Blob

Selecionar tudo

CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED SYS.GERARBARCODE as import org.jbars.*;
import java.awt.*;
import java.io.*;
import java.sql.Blob;
import oracle.jdbc.*;
import oracle.sql.*;



class GerarBarcode {

    public GerarBarcode() {
        super();
    }
    
    public static Blob code(String codigo, String tipo, String sizeY,String extensao) throws java.sql.SQLException, Exception {
        OracleConnection conn = (OracleConnection) new OracleDriver().defaultConnection();
        conn.setAutoCommit(false);
        BLOB blob = BLOB.createTemporary(conn, true, BLOB.DURATION_SESSION);

        byte[] file = null;

        String imageFormat = "barcode128.JPG";

        if (tipo.equalsIgnoreCase("CODE128")) {
            Barcode128 barcode128 = new Barcode128();

            Color barColorColor;
            barColorColor = Color.black;
            Color textColorColor;
            textColorColor = Color.black;
            double angle = 0;

            barcode128.setFontSize(10);
            barcode128.setTextAlignment(barcode128.ALIGN_CENTER);
            barcode128.setCode(codigo);

            if (imageFormat.equals("barcode128.PNG")) {
                file = barcode128.createPNG(Integer.parseInt(sizeY),
                        barColorColor, textColorColor, angle);
            } else if (imageFormat.equals("barcode128.JPG")) {
                file = barcode128.createJPG(Integer.parseInt(sizeY),
                        barColorColor, textColorColor, angle);
            } else {
                System.out.println("Unknow image format: " + imageFormat);
                System.exit(1);
            }

        }
        
        if (tipo.equalsIgnoreCase("CODE93")) {
            Barcode93 barcode93 = new Barcode93();

            Color barColorColor;
            barColorColor = Color.black;
            Color textColorColor;
            textColorColor = Color.black;
            double angle = 0;

            barcode93.setFontSize(10);
            barcode93.setTextAlignment(barcode93.ALIGN_CENTER);
            barcode93.setCode(codigo);

            if (imageFormat.equals("barcode93.PNG")) {
                file = barcode93.createPNG(Integer.parseInt(sizeY),
                        barColorColor, textColorColor, angle);
            } else if (imageFormat.equals("barcode93.JPG")) {
                file = barcode93.createJPG(Integer.parseInt(sizeY),
                        barColorColor, textColorColor, angle);
            } else {
                System.out.println("Unknow image format: " + imageFormat);
                System.exit(1);
            }

        }
        
        if (tipo.equalsIgnoreCase("INTER25")) {
            BarcodeInter25 barcode25 = new BarcodeInter25();

            Color barColorColor;
            barColorColor = Color.black;
            Color textColorColor;
            textColorColor = Color.black;
            double angle = 0;

            barcode25.setFontSize(10);
            barcode25.setTextAlignment(barcode25.ALIGN_CENTER);
            barcode25.setCode(codigo);

            if (imageFormat.equals("barcode25.PNG")) {
                file = barcode25.createPNG(Integer.parseInt(sizeY),
                        barColorColor, textColorColor, angle);
            } else if (imageFormat.equals("barcode25.JPG")) {
                file = barcode25.createJPG(Integer.parseInt(sizeY),
                        barColorColor, textColorColor, angle);
            } else {
                System.out.println("Unknow image format: " + imageFormat);
                System.exit(1);
            }

        }

         OutputStream os = blob.getBinaryOutputStream();
         os.write(file);
         os.flush();
         os.close();

         return blob;

    }

}
E para chamar uso a função

Selecionar tudo

create or replace FUNCTION generate_barcode( codigo IN VARCHAR2  -- Números do código de barras
                                  , tipo IN VARCHAR2  --'CODE128','CODE93' ou 'INTER25'
                                  , tamanho IN VARCHAR2 -- Tamanho da imagem, eu utilizo 50
                                  , extensao IN VARCHAR2 -- 'barcode.JPG' ou 'barcode.PNG'
                                    ) RETURN BLOB
AS LANGUAGE JAVA NAME 'GerarBarcode.code(java.lang.String,java.lang.String, java.lang.String,java.lang.String)return oracle.sql.BLOB';
Rodei tudo no SYS, estou com um probleminha de permissão, mas funciona! :D

OBS.: Lembrar de importar a biblioteca jai_codec e JBARS
Qualquer dúvida estou a disposição
Avatar do usuário
Porva
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 342
Registrado em: Seg, 29 Jan 2007 7:36 am
Localização: São Paulo/SP
Rafael S. Nunes
São Paulo/SP

Galera, ressuscitando um tópico antigo aqui,

"OBS.: Lembrar de importar a biblioteca jai_codec e JBARS"

mas como eu faço pra importar essas bibliotecas para o banco usando o PL/SQL Developer pra depois utilizar a classe java e a procedure para gerar o código de barras?
Avatar do usuário
Porva
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 342
Registrado em: Seg, 29 Jan 2007 7:36 am
Localização: São Paulo/SP
Rafael S. Nunes
São Paulo/SP

consegui aqui usando essa dica:

antes de compilar a classe Java no banco, será preciso carregar os arquivos jai_codec.jar e JBARS.jar para o banco.

http://www.dba-oracle.com/tips_oracle_sqlj_loadjava.htm

copiei os arquivos jai_codec.jar e JBARS.jar para dentro do Unix via FTP, aí carreguei eles para o banco de dados usando o comando abaixo:

Selecionar tudo

C:\oracle9i\bin>loadjava -user <user>/<password> jai_codec.jar
e

Selecionar tudo

C:\oracle9i\bin>loadjava -user <user>/<password> JBARS.jar
Obs.: substitua o caminho C:\oracle9i\bin> do exemplo, pelo seu diretório Windows ou Unix.

depois segui os passos mostrados nas mensagens anteriores para compilar a classe Java no banco e criar a função que irá chamar essa classe e retornar o código de barras.

tudo estando certo, você poderá testar assim:

Selecionar tudo

SELECT generate_barcode_f( p_code  => '64731136' -- Numeros do código de barras
                          ,p_tipo  => 'CODE93'   -- 'CODE128','CODE93' ou 'INTER25'
                          ,p_sizeY => '50')      -- Tamanho da imagem (altura), ex: 50
  FROM DUAL;
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Você pode importar uma classe java usando o comando LOADJAVA do sistema operacional.

Aqui tem um exemplo:
http://www.dba-oracle.com/tips_oracle_sqlj_loadjava.htm
The SQLJ loadjava Utility
The loadjava utility (in Oracle 8.1.5 and up) loads Java source and class files into the database. When class files are created in a conventional manner, outside the database, loadjava is used to get them into the database.

loadjava requires two database privileges to load java objects into your own schema: CREATE PROCEDURE and CREATE TABLE. To load Java objects into a schema other than the currently connected user, CREATE ANY PROCEDURE and CREATE ANY TABLE Oracle privileges are required for the loadjava user.

This example will use a simple Java program that will be compiled outside of Oracle and then loaded into the database.

see loadjava script download

The class file is now loaded into the database and visible from the dba_objects view with an object type of JAVA CLASS.

From SQL*Plus, create the PL/SQL wrapper to invoke the newly loaded Java class:

Selecionar tudo

SQL> create or replace procedure call_simplejava
2 as language java 
3 name 'SimpleJava.showMessage()';
4 / 

Execute the code from SQL*Plus:

SQL> set serveroutput on;
SQL> call dbms_java.set_output(50);

Call completed.

SQL> execute call_simplejava;
Here we are

PL/SQL procedure successfully completed.
In this example, the Java class file was loaded into the database. The Java source file can also be loaded. But, both the source and class files cannot be loaded at the same time.

Selecionar tudo

C:\oracle9i\bin>loadjava -user scott/tiger SimpleJava.java
If loading many Java class files at one time, it is advisable to put them in a JAR file and load them into the database at one time, since the loadjava program will also load JAR files. loadjava provides many command line options for the Java developer. The complete list can be viewed by typing loadjava at the command line.

Just as loadjava loads the database with our Java files or classes, the dropjava utility deletes them. In the example below, the class file that was loaded with loadjava is removed. And just like loadjava, it will drop Java source, Java classes, or JAR files.

Selecionar tudo

C:\oracle9i\bin>dropjava -u scott/tiger SimpleJava.class
Alternatively, instead of using the command line utility, you can call a package that will do the same thing:

Selecionar tudo

SQL> call dbms_java.dropjava('... options...');
Dropjava can be used to delete Java objects from the database. These Java objects may have been loaded into the database through the loadjava utility. The next utility also loads code into the database; only instead of Java, it loads a PL/SQL Server Page (PSP).

Selecionar tudo

loadjava script download 
The SQLJ Utility Loading and Dropping Java Objects

The loadjava utility (Oracle 8.1.5 and up) loads Java source and class files into the database. When class files are created in a conventional manner, outside the database, loadjava is used to get them into the database.

loadjava requires two database privileges to load java objects into your own schema: CREATE PROCEDURE and CREATE TABLE. To load Java objects into a schema other than the currently connected user, CREATE ANY PROCEDURE and CREATE ANY TABLE privileges are required.

This example will use a simple Java program that will be compiled outside of Oracle and then loaded into the database.

Selecionar tudo

public class SimpleJava {

public void main(String[] args) {
System.out.println("Here we are"); 
}
From DOS or UNIX :

Selecionar tudo

C:\oracle9i\bin>javac SimpleJava.java

C:\oracle9i\bin>loadjava -user scott/tiger SimpleJava.class
The class file is now loaded into the database and visible from the dba_objects view with an object type of JAVA CLASS.

From SQL*Plus, create the PL/SQL wrapper to invoke the newly loaded Java class:

Selecionar tudo

SQL> create or replace procedure call_simplejava
2 as language java 
3 name 'SimpleJava.showMessage()';
4 / 
Execute the code from SQL*Plus:

Selecionar tudo

SQL> set serveroutput on;
SQL> call dbms_java.set_output(50);

Call completed.

SQL> execute call_simplejava;
Here we are

PL/SQL procedure successfully completed.
In this example, the Java class file was loaded into the database. The Java source file can also be loaded. But, both the source and class files cannot be loaded at the same time.

Selecionar tudo

C:\oracle9i\bin>loadjava -user scott/tiger SimpleJava.java
If loading many Java class files at one time, it is advisable to put them in a JAR file and load them into the database at one time, since the loadjava program will also load JAR files. A JAR file is a group of Java class files lumped into one file, a format similar to TAR (on UNIX ) and WinZip (on Windows). The contents of a JAR file can be viewed using these popular utilities. Java developers prefer to distribute a few JAR files rather than many individual Java class files.

loadjava provides many command line options for the Java developer. The complete list can be viewed by typing loadjava at the command line.

Just as loadjava loads the database with our Java files or classes, the dropjava utility deletes them. In the example below, the class file that was loaded with loadjava is removed. And just like loadjava, it will drop Java source, Java classes, or JAR files.

Selecionar tudo

C:\oracle9i\bin>dropjava -u scott/tiger SimpleJava.class
Alternatively, instead of using the command line utility, you can call a package that will do the same thing:

Selecionar tudo

SQL> call dbms_java.dropjava('... options...');
Dropjava can be used to delete Java objects from the database. These Java objects may have been loaded into the database through the loadjava utility. The next utility also loads code into the database; only instead of Java, it loads a PL/SQL Server Page (PSP).
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 5 visitantes