|
O problema A Stored Procedure est� funcionando adequadamente, j�
foi testada v�rias vezes utilizando chamadas a partir de blocos PL/SQL e est�
retornando os arrays corretamente.
A classe PesquisaConcess.java
compila normalmente, por�m, a execu��o parece entrar em loop infinito na
linha cstmt.executeQuery().
Segue as classes, o header da Stored Procedure e a
defini��o dos datatypes utilizados.
O que h� de errado ? � necess�rio inicializar
os varrays, igual a quando se faz uma chamada de dentro do Oracle ? Se
sim, como se faz, n�o achei na documenta��o ?
Se puderem me dar um dica, uma id�ia de onde eu
estou marcando toca, agrade�o !
abra�os e obrigado,
Astor R. Freitas Classes JAVA
1.3.2
/****************************
ConfiguracaoConexao.java
*****************************/
import java.sql.*;
import oracle.jdbc.driver.*; public class ConfiguracaoConexao {
public ConfiguracaoConexao() {
} public ConfiguracaoConexao(String server, int port,
String instance, String user, String passw)
{
servidor = server; numporta = port; sid = instance; usuario = user; senha = passw; } public Connection getConexao() throws SQLException
{
// Carregar o driver Oracle para o JDBC DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); return DriverManager.getConnection("jdbc:oracle:thin:@"+servidor+":"+numporta+":"+sid,usuario,senha); } public String
getServidor(){
return servidor; } public int
getNumPorta(){
return numporta; } public String
getSid(){
return sid; } public String
getUsuario(){
return usuario; } public String
getSenha(){
return senha; } private Connection conn;
private String servidor = "srv-www-dxtsp"; private int numporta = 1521; private String sid = "ci_gm"; private String usuario = "clideres"; private String senha = "clideres"; } /****************************
PesquisaConcess.java
*****************************/ import oracle.sql.*;
import oracle.jdbc.driver.*; import java.sql.*; public class PesquisaConcess {
public PesquisaConcess() throws SQLException{ QtdConcess= 0; p_StaCode ="00"; p_StaMsg ="OK"; ConfiguracaoConexao ConfigConex = new
ConfiguracaoConexao();
Connection Conexao = ConfigConex.getConexao(); if (Conexao != null){
OracleCallableStatement cstmt =
(OracleCallableStatement)Conexao.prepareCall("begin
P_ClTodasConcessHab(:1,:2,:3,:4,:5); end;");
cstmt.registerOutParameter(1, OracleTypes.VARCHAR); cstmt.registerOutParameter(2, OracleTypes.VARCHAR); cstmt.registerOutParameter(3, OracleTypes.ARRAY,"T_IDCONCESS"); cstmt.registerOutParameter(4, OracleTypes.ARRAY,"T_NOMEFANTASIA"); cstmt.registerOutParameter(5, OracleTypes.INTEGER); // Na
execu��o da linha abaixo, o programa parece entrar em um loop
infinito
cstmt.executeQuery(); p_StaCode=
cstmt.getString(1);
p_StaMsg = cstmt.getString(2); ARRAY IdConcess = cstmt.getARRAY(3); ARRAY NomeFantasia= cstmt.getARRAY(4); QtdConcess =
cstmt.getInt(5);
cstmt.close();
Conexao.close(); } // do if (Conexao != null) }
public static void main(String[] args) throws
SQLException{
PesquisaConcess pesq = new PesquisaConcess(); System.out.println(pesq.getQtdConcess()); System.out.println(pesq.getp_StaCode()); System.out.println(pesq.getp_StaMsg()); } public String[]
getTodosNomeFantasia(){
return NomeFantasia; } public int[]
getTodosIdConcess(){
return IdConcess; } public int getQtdConcess(){ return QtdConcess; } public String getp_StaCode(){ return p_StaCode; } public String getp_StaMsg(){ return p_StaMsg; } private int[] IdConcess;
private String[] NomeFantasia; private int QtdConcess; private String p_StaCode; private String p_StaMsg; } No Oracle
8.1.5
/****************************
Stored Procedure
*****************************/ PROCEDURE P_ClTodasConcessHab(
p_StaCode IN
OUT K_ClTpDados.s_StaCode,
p_StaMsg IN
OUT K_ClTpDados.s_StaMsg,
p_IdConcess IN OUT t_IdConcess, p_NomeFantasia IN OUT t_NomeFantasia, p_QtdConcessHab IN OUT NUMBER) /****************************
Datatypes utilizados
*****************************/ CREATE OR REPLACE type t_IdConcess as varray(1000) of NUMBER(5)
/ CREATE OR REPLACE type t_NomeFantasia as varray(1000) of
VARCHAR2(40)
/ Dextron
- Management Consulting
Fone:
(11) 3845 5069 / 5542 5954
Email:
[EMAIL PROTECTED]
Enviado em 03 de Maio de 2001. |
