Stored Procedures em Java

Forum destinado a Linguagem JAVA! Classes, orientação a objeto, conexão com banco, chamada de procedures, etc
Responder
Avatar do usuário
Marciel
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 158
Registrado em: Qui, 03 Mai 2007 10:12 am
Localização: Vitória - ES
Sabe qual o cúmulo da ignorância, da apatia e da ira?
Não sei, não quero saber e tenho raiva de quem sabe.

Bom dia,

Java não é meu forte... alguém pode me ajudar a identificar o erro dessa classe? A variável "DST" sempre retorna NULL.

Selecionar tudo

create or replace and compile java source named zipfiles as
import java.io.*;
import java.util.zip.*;
import java.sql.*;
import oracle.sql.*;

public class zipFiles
{
  public static void packBlob(oracle.sql.BLOB srcBlob, oracle.sql.BLOB dstBlob[]) {
    try {
      OutputStream outBuffer = dstBlob[0].getBinaryOutputStream();
      InputStream inBuffer = srcBlob.getBinaryStream();
      ZipOutputStream zip = new ZipOutputStream(outBuffer);
      byte[] tmpBuffer = new byte[256];
      int n;
      while ((n = inBuffer.read(tmpBuffer)) >= 0)
        zip.write(tmpBuffer, 0, n);
      zip.close();
    }
    catch (SQLException e) {
      System.err.println(e);
    }
    catch (IOException e) {
      System.err.println(e);
    }
  }

  public static void unpackBlob(oracle.sql.BLOB srcBlob, oracle.sql.BLOB dstBlob[]) {
    try {
      OutputStream outBuffer = dstBlob[0].getBinaryOutputStream();
      InputStream inBuffer = srcBlob.getBinaryStream();
      ZipInputStream zip = new ZipInputStream(inBuffer);
      byte[] tmpBuffer = new byte[256];
      int n;
      while ((n = zip.read(tmpBuffer)) >= 0)
        outBuffer.write(tmpBuffer, 0, n);
      outBuffer.close();
    }
    catch (SQLException e) {
      System.err.println(e);
    }
    catch (IOException e) {
      System.err.println(e);
    }
  }

}

Selecionar tudo

CREATE OR REPLACE PACKAGE BODY PACKAGE_ZIP AS
   PROCEDURE COMPACTA_BLOB (
      SRC   IN       BLOB,
      DST   IN OUT   BLOB) AS
      LANGUAGE JAVA
      NAME 'zipFiles.packBlob(oracle.sql.BLOB, oracle.sql.BLOB[])';

   PROCEDURE DESCOMPACTA_BLOB (
      SRC   IN       BLOB,
      DST   IN OUT   BLOB) AS
      LANGUAGE JAVA
      NAME 'zipFiles.unpackBlob(oracle.sql.BLOB, oracle.sql.BLOB[])';
END;
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Adianto que nunca fiz esse pl-sqsl-java da vida. Mas olhando aqui eu chutaria o seguinte:

1-DST IN OUT BLOB
A variável é IN e OUT.

2-public static void unpackBlob(oracle.sql.BLOB srcBlob, oracle.sql.BLOB dstBlob[])
Por isso é criado um vetor "dstBlob[]". Para receber o IN e o OUT.

3-OutputStream outBuffer = dstBlob[0].getBinaryOutputStream();
Teoricamente o dstBlob[0] seria o IN.
e dstBlob[1] seria o OUT.

Logo teria um pa o IN:
InputStream inDSTBuffer = dstBlob[0].getBinaryStream();
E o do OUT:
OutputStream outDSTBuffer = dstBlob[1].getBinaryOutputStream();

Mas relembrando que é um chute.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante