Retornar o Valor Stored Procedure no Delphi.net
Olá, pessoal eu estou desenvolvendo uma aplicação em delphi.net usando o asp.net com acesso ao banco de dados SQLServer2000, mas estou com um pequeno problema, eu consigo executar a stored procedure para incluir um produto, mas eu gostaria de receber o retorna para saber se o produto foi cadastrado.
Como eu faço?
Ex. Inclusão de Banco
bdpSP.CommandType := CommandType.StoredProcedure;
bdpSP.CommandText := ´SP_GRVALT_BANCO´;
bdpsp.ParameterCount :=3;
bdpsp.Parameters.Add(´@intCodigo´,DbType.string, 0);
bdpsp.Parameters.Add(´@strBAnco´,DbType.String, 0);
bdpsp.Parameters.Add(´@strHome´,DbType.String, 0);
bdpsp.Parameters.Add(´@saida´, DbType.String, 0);
bdpsp.Parameters[´@intCodigo´].Value := ´377´;
bdpsp.Parameters[´@strBAnco´].Value := ´BANCO DO BRASIL S/A´;
bdpsp.Parameters[´@strHome´].Value := ´www.BB.com´;
bdpSP.Connection.Open;
bdpsp.Prepare;
bdpSP.ExecuteNonQuery();
//Aqui eu não consigo receber o retorno da stored procedure
strsaida := convert.ToString(bdpSP.Parameters[´@saida´].Value);
bdpSP.Connection.Close;
Como eu faço?
Ex. Inclusão de Banco
bdpSP.CommandType := CommandType.StoredProcedure;
bdpSP.CommandText := ´SP_GRVALT_BANCO´;
bdpsp.ParameterCount :=3;
bdpsp.Parameters.Add(´@intCodigo´,DbType.string, 0);
bdpsp.Parameters.Add(´@strBAnco´,DbType.String, 0);
bdpsp.Parameters.Add(´@strHome´,DbType.String, 0);
bdpsp.Parameters.Add(´@saida´, DbType.String, 0);
bdpsp.Parameters[´@intCodigo´].Value := ´377´;
bdpsp.Parameters[´@strBAnco´].Value := ´BANCO DO BRASIL S/A´;
bdpsp.Parameters[´@strHome´].Value := ´www.BB.com´;
bdpSP.Connection.Open;
bdpsp.Prepare;
bdpSP.ExecuteNonQuery();
//Aqui eu não consigo receber o retorno da stored procedure
strsaida := convert.ToString(bdpSP.Parameters[´@saida´].Value);
bdpSP.Connection.Close;

Jfcarlos
Curtidas 0
Respostas

Bon Jovi
08/09/2004
A propriedade Direction do Parameters deve estar setado para Output. Verifique se pode ser isso.
Exemplo em C# com a classe sqlCommand:
Exemplo em C# com a classe sqlCommand:
this.sqlCommand1.Parameters[´@saida´].Direction = System.Data.ParameterDirection.Output;
GOSTEI 0

Jfcarlos
08/09/2004
Max precision is 0 for OUT parameter. Set Precision property for the parameter.
Estou dias tentando fazer a procedure retornar o valor. Acho que a borland deveria disponibilizar material para nós.
Estou dias tentando fazer a procedure retornar o valor. Acho que a borland deveria disponibilizar material para nós.
GOSTEI 0

Bon Jovi
08/09/2004
Nao uso BDP, mas vou tentar te ajudar no chute... Pelo q a msg diz pode ser que a precisão do parametro nao esteja setada. Qual tipo do campo/variavel da base vc ta retornando? Por exemplo, se for NUMERIC(15) ou DECIMAL(15), deveria setar a precisao assim:
this.sqlCommand1.Parameters[´@saida´].Precision = 15;
this.sqlCommand1.Parameters[´@saida´].Direction = System.Data.ParameterDirection.Output;
Vê em tempo de design as propriedades basicas do Parameters pra vc avaliar melhor o q pode faltar.
this.sqlCommand1.Parameters[´@saida´].Precision = 15;
this.sqlCommand1.Parameters[´@saida´].Direction = System.Data.ParameterDirection.Output;
Vê em tempo de design as propriedades basicas do Parameters pra vc avaliar melhor o q pode faltar.
GOSTEI 0

Jfcarlos
08/09/2004
Cara valeu!!, pela ajuda. É isso mesmo, mas eu estou trabalhando com uma string, quando ele cadastra a stored procedure retorna ´OK´ ou ´Falha´. Coloquei a precison com 7 e deu certo muito obrigado mesmo.....
É bom sempre contar com ajuda deste forum..
É bom sempre contar com ajuda deste forum..
GOSTEI 0