Não é um mês Valido. Problema com data

Tenho o seguinte código que executa uma Store Procedure no meu Banco de Dados Oracle:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.*;
import java.sql.*;
import oracle.jdbc.pool.*;

public class Consulta {
        
    /**
     * Creates a new instance of <code>Consulta</code>.
     */
    Connection conexao = null;
    public void Consulta(){
    }
    
    public void Conecta() {
    try{
    String teste="";
    conn con = new conn();
    conexao = con.getConnection();
    CallableStatement stmt1 = conexao.prepareCall("call teste_data(?,?,?)");
    stmt1.setString(1,"2007/07/08 19:06:09");
    stmt1.setString(2,"2007/07/08 19:40:40");
    stmt1.setString(3,"receptor");
    ResultSet rs1=stmt1.executeQuery();
    stmt1.close();
    rs1.close();
    }
    catch(SQLException e){
    	e.printStackTrace();
    	}
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Consulta consulta = new Consulta();
        consulta.Conecta();
    }
}

Mas quando eu executo ela mostra o seguinte erro:

[quote]java.sql.SQLException: ORA-01843: not a valid month

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:305)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:272)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:623)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:181)
at oracle.jdbc.driver.T4CPreparedStatement.execute_for_rows(T4CPreparedStatement.java:543)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1028)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:2888)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:2929)
at Consulta.Conecta(Consulta.java:29)
at Consulta.main(Consulta.java:44)[/quote]

A instrulção SQL quando jogada no Banco de Dados funciona corretamente mas quando executo pelo código não vai. O que pode ser??

Verifique o idioma do sistema operacional que o server esta rodando, geralmente da conflito :wink:

Ambos estão em português

A SP, lá no Oracle, tá esperando String ou Date?!?
Tente alterar para Date e passar os parametros com o setDate ao invez do setString

… ou ainda um setTimestamp

Deu certo!!!

Aqui vai como ficou o código final:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.*;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.sql.Timestamp;  
import java.sql.*;
//import java.sql.Date;
import oracle.jdbc.pool.*;


public class Consulta {
        
    /**
     * Creates a new instance of <code>Consulta</code>.
     */
    Connection conexao = null;
    public void Consulta(){
    }
    
    public void Conecta()throws ParseException{
    try{
    String teste="";
    conn con = new conn();
    conexao = con.getConnection();
    SimpleDateFormat formatar = new SimpleDateFormat("dd/MM/yy HH:mm:ss");
    Date data1= formatar.parse("07/07/07 19:06:09");
    Date data2= formatar.parse("08/07/07 19:40:40");
    Timestamp datainic=new Timestamp(data1.getTime());
    Timestamp datafin=new Timestamp(data2.getTime());
    CallableStatement stmt1 = conexao.prepareCall("call teste_data(?,?,?)");
    stmt1.setTimestamp(1,datainic);
    stmt1.setTimestamp(2,datafin);
    stmt1.setString(3,"receptor");
    ResultSet rs1=stmt1.executeQuery();
    stmt1.close();
    rs1.close();
    }
    catch(SQLException e){
    	e.printStackTrace();
    	}
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)throws ParseException{
        // TODO code application logic here
        Consulta consulta = new Consulta();
        consulta.Conecta();
    }
}