Stored Procedure ( CallebleStatement ) com Sql Server 2008

Bom dia !!

Bom ja dei uma procurada no forum e nao conseguir achar o uso da classe CallebleStatement com Sql Server , por isso estou abrindo um tópico …

Vamos la …

O problema é o seguinte : Não estou conseguindo chamar uma procedure no banco para me retornar um resultado .
como exemplo estou setando um parametro e recebendo dois , portante são 3 parametros , só que o tipo da variavel que o Sql Server retorna eu acho que é String , na classe “JavaTypes” do driver sqljdbc4.jar diz que é String , porém não consigo setar esse tipo . Somente outros como Varchar , Nvarchar etc …

Segue o codigo de exemplo …

public void selectDadosSQL(Cliente cliente)
{
        private Connection connect; // Connecta com  o SQL
	private CallableStatement stmt;


try
		{
			// o tipo é String , porem nao consigo setar ...
			getStrConnLocadora(); // metodo que abre minha conexao com o banco.
			
			
			stmt = connect.prepareCall("{call pr_Cliente_sel(?,?,?)}");
			stmt.setString(1, cliente.getNomeCliente());
		        stmt.registerOutParameter(2,Types.String );  // eu nao consigo usar o tipo String , nao aparece como opção , porem na class "JavaTypes"
			stmt.registerOutParameter(3,Types.String);

                       stmt.execute();	
		    
		     cliente.setNomeCliente(stmt.getString(2));
		     cliente.setCpf(stmt.getString(3));

                   	stmt.close();
		    connect.close();
	      }
	     catch (SQLException e) 
	    {
	    	System.out.println("Erro" +e.getMessage());
	    }
	}
}

Caso eu esteja errado com meu raciocionio … qual seria o valor correta a ser registrado ?? Varchar , LOngvarchar ??

Vlws aew !!

o correto eh usar varchar, que seria a “string” do banco de dados.

mauricio entao como eu postei … Varchar nao é … pois varchar e do oracle … eu estou utilizando SQL Serve 2008 … =/

varchar tambem é do sqlserver e de muitos outros bancos.
segue um trecho da documentacao do sqlserver 2008

varchar [ ( n | max ) ]

Dados de caractere não-Unicode de comprimento variável. n pode ser um valor de 1 a 8.000. max indica o tamanho máximo de armazenamento, que é 2^31-1 bytes. O tamanho de armazenamento é o comprimento real dos dados inseridos + 2 bytes. Os dados digitados podem ter 0 caractere de comprimento. Os sinônimos de ISO para varchar são char varying ou character varying.

ele nao aceita … da o seguinte erro “ErroProcedure or function pr_Cliente_sel has too many arguments specified.”

fazer um insert , update e delete eu consigo fazer na boa… somente o select que esta de rosca !!

vlws !!!


public void selectDadosSQL(Cliente cliente)
	{
		try
		{
			getStrConnLocadora();
			
			
			stmt = connect.prepareCall("{call pr_Cliente_sel(?,?,?)}");
			stmt.setString(1, cliente.getNomeCliente());
		    	
                        stmt.registerOutParameter(2,java.sql.Types.VARCHAR );
			stmt.registerOutParameter(3,java.sql.Types.VARCHAR);
		    stmt.execute();	
		    
		     cliente.setNomeCliente(stmt.getString(2));
		     cliente.setCpf(stmt.getString(3));
		  
			stmt.close();
		    connect.close();
		}
		catch (SQLException e) 
	    {
	    	System.out.println("Erro" +e.getMessage());
	    }
	}
	
	
	
}

essa procedure realmente tem 3 parametros nela, pela mensagem esta dizendo que tem muitos parametros especificados.

[]'s

go
Use Locadora
go

if object_id('pr_Cliente_sel') is null exec('create proc pr_Cliente_sel as set nocount on')
go

alter procedure pr_Cliente_sel
	@nomeCliente  varchar(50) = null
	
as 
set nocount  on 

select
	nomeCliente,
	cpf
from
	Cliente cl
where
	cl.nomeCliente  = @nomeCliente 
		



go
sp_recompile pr_Cliente_sel
go

Cara e coisa simples kkkk e esta me dando mta dor de cabeça … meu deus … mas nao vao descansar enquanto nao conseguir resolver isso …!!

cara, sua procedure nao esta declarado os parametros de saida, por isso da erro.

e so declarar o output ali entao ?? oO

isso, como se fosse parametros de entrada, exemplo:
function(param in type, param out type, param out type)

[]'s

Mauricio vlws !!! vou testar aqui assim que tiver um tempo no … e Posto do resultado !!

Mals pela Sumida … mas resolveu !!! vlws aew pela ajuda !!!