Retorno de SP no SQL Server sem Parametros de output definidos [RESOLVIDO]

Fala galera, td blz??

hoje que ta com problemas sou eu :smiley:
aqui na empresa a grande maioria dos sistemas funcionam baseados em SPs no SQL Server, ate ai tudo normal, o lance todo é que na criação delas, a pessoa que criou a grande maioria delas, nao definiu os parametros de saida da SP. com o codigo abaixo estou atualmente recebendo esse erro The index 1 is out of range.

Exemplo:

CREATE  PROCEDURE cot_acompanhamento_corretor_sps
@data_inicio smalldatetime,
@data_final smalldatetime
as
set nocount on

declare @corretor_id int
 
select PRODUTO, NOME_PRODUTO,RAZAO_SOCIAL, CORRETOR FROM ...
...
...
..

ou seja, entro com duas datas (data_inicio e data_final )e o as minhas saidas são PRODUTO, NOME_PRODUTO,RAZAO_SOCIAL, CORRETOR, …

o Meu codigo ficou assim:

import java.sql.*;

public class Dao {

    ResultSet rs;
    PreparedStatement stmt;
    Connection con;
    CallableStatement cs;

    public void open() throws Exception {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        con = DriverManager.getConnection("jdbc:sqlserver://co01;databaseName=int_corretagem_db", "root", "root");
    }

    public void close() throws Exception {
        con.close();
    }
}
import entity.*;
import java.sql.*;
import java.util.*;

public class RelatorioDao extends Dao {

    public List<Relatorio> findAll(String dataInicial, String dataFinal) throws Exception {

        List<Relatorio> retorno = new ArrayList<Relatorio>();
        open();

        cs = con.prepareCall("cot_acompanhamento_corretor_sps '?','?'");
        cs.setString(1, dataInicial);
        cs.setString(2, dataFinal);
        rs = cs.executeQuery();

        while (rs.next()) {
            Relatorio rel = new Relatorio();

            rel.setProduto(rs.getString("PRODUTO"));
            rel.setNomeProduto(rs.getString("NOME_PRODUTO"));
            rel.setRazaoSocial(rs.getString("RAZAO_SOCIAL"));
            rel.setCorretor(rs.getString("CORRETOR"));
            retorno.add(rel);
        }
        stmt.close();//fecha tabela
        close();//fecha o banco

        return retorno;
    }
}
public class Relatorio {

    private String produto;
    private String nomeProduto;
    private String razaoSocial;
    private String corretor;

    public Relatorio() {
    }

    public Relatorio(String produto, String nomeProduto, String razaoSocial, String corretor) {
        this.produto = produto;
        this.nomeProduto = nomeProduto;
        this.razaoSocial = razaoSocial;
        this.corretor = corretor;
    }


    public String getCorretor() {
        return corretor;
    }

    public void setCorretor(String corretor) {
        this.corretor = corretor;
    }

    public String getNomeProduto() {
        return nomeProduto;
    }

    public void setNomeProduto(String nomeProduto) {
        this.nomeProduto = nomeProduto;
    }

    public String getProduto() {
        return produto;
    }

    public void setProduto(String produto) {
        this.produto = produto;
    }

    public String getRazaoSocial() {
        return razaoSocial;
    }

    public void setRazaoSocial(String razaoSocial) {
        this.razaoSocial = razaoSocial;
    }
}

Essa é a pagina que esta chamando tudo, estou apenas testando a execução da SP, mais tarde irei colocar isso em um servlet.

<%@page import="entity.*" %>
<%@page import="persistence.*" %>
<html>
    <head>
        <title>Relatorio</title>
    </head>
    <body>
        <%
                    RelatorioDao rd = new RelatorioDao();

                    try {
                        for (Relatorio rel : rd.findAll("2010-08-01", "2010-08-10")) {
                            out.print(rel.toString());
                        }
                    } catch (Exception e) {
                        out.print("erro: " + e.getMessage());
                        e.getStackTrace();
                    }
        %>
    </body>
</html>

Gostaria da ajuda dos colegas para saber aonde estou errando, ou o que pode estar faltando algo em meu programa
desde ja agradeço a atenção de todos.

Abração 8)
Max

Fala galera, acabei achando uma forma de contornar o problema, não é a melhor forma de fazer mas acaba funcionando tambem assim: Passando os parametros para SP atraves da concatenaçao dos mesmo com a String no con.prepareCall

import entity.*;
import java.sql.*;
import java.util.*;

public class RelatorioDao extends Dao {

    public List<Relatorio> findAll(String dataInicial, String dataFinal) throws Exception {

        List<Relatorio> retorno = new ArrayList<Relatorio>();
        open();

        cs = con.prepareCall("cot_acompanhamento_corretor_sps '"+dataInicial+"','"+dataFinal+"' );
        rs = cs.executeQuery();

        while (rs.next()) {
            Relatorio rel = new Relatorio();

            rel.setProduto(rs.getString("PRODUTO"));
            rel.setNomeProduto(rs.getString("NOME_PRODUTO"));
            rel.setRazaoSocial(rs.getString("RAZAO_SOCIAL"));
            rel.setCorretor(rs.getString("CORRETOR"));
            retorno.add(rel);
        }
        cs.close();//fecha tabela
        close();//fecha o banco

        return retorno;
    }
}

Abração
Max 8)