Executando Procedure
28/02/2012
0
OpenConnection();
Cmd = new FbCommand(ATUALIZAAGNWEB, Con);
Cmd.CommandType = CommandType.StoredProcedure;
Cmd.Parameters.AddWithValue(@DtVisita, Convert.ToDateTime(a.dtvisita));
Cmd.Parameters.AddWithValue(@Cd_clb, a.cd_clb);
Cmd.Parameters.AddWithValue(@Horario, a.horario);
Cmd.Parameters.AddWithValue(@nmcliente, a.nmcliente);
Cmd.Parameters.AddWithValue(@Telefone, a.telefone);
Dr = Cmd.ExecuteReader();
Dr.Read();
return Dr.GetInt32(0);
Thiago Garcez
Posts
28/02/2012
Joel Rodrigues
Use o método ExecuteNonQuery() ao invés de ExecuteReader().
28/02/2012
Thiago Garcez
Use o método ExecuteNonQuery() ao invés de ExecuteReader().
Realmente, esqueci de botar o erro, segue abaixo.
Input parameter mismatch for procedure ATUALIZAAGNWEB
Não é consulta é pra inserir, mais ele me retorna um numero.
Vou alterar e já respondo.
28/02/2012
Thiago Garcez
Input parameter mismatch for procedure ATUALIZAAGNWEB
Como o erro mesmo diz está dando erro na entrada dos parametros, porém não tenho certeza se é realmente assim que passa os parametros.
28/02/2012
Joel Rodrigues
Se for, falta você definir o parâmetro de saída.
Para isso, instancie um FbParameter, informe o nome e um valor qualquer e a propriedade Direction deve ser Output.
Após o ExeuteNonQuery(), recupere o valor do parâmetro de saída.
28/02/2012
Thiago Garcez
Se for, falta você definir o parâmetro de saída.
Para isso, instancie um FbParameter, informe o nome e um valor qualquer e a propriedade Direction deve ser Output.
Após o ExeuteNonQuery(), recupere o valor do parâmetro de saída.
Bom eu não conheço isso ainda, teria como me mostrar um exemplo?
Mais ele está dando erro no Input não teria que trocar algum coisa no que passei?
28/02/2012
Joel Rodrigues
- O valor de retorno é através de um parâmetro de saída ou de uma consulta?
- Os tipos dos parâmetros que você está passando estão corretos?
Aparentemente não há erro na estrutura do seu código.
28/02/2012
Thiago Garcez
- O valor de retorno é através de um parâmetro de saída ou de uma consulta?
- Os tipos dos parâmetros que você está passando estão corretos?
Aparentemente não há erro na estrutura do seu código.
Por parametro de saída, as variáveis estão, não sei o comando pois é a primeira vez que estou fazendo por isso a dúvida.
28/02/2012
Joel Rodrigues
28/02/2012
Thiago Garcez
28/02/2012
Joel Rodrigues
# TABELA:
CREATE TABLE ITENS_VENDA
(
VENDA INT,
PRODUTO VARCHAR(10),
QUANTIDADE DECIMAL(8,2),
PRECO DECIMAL(8,2)
)
GO
# PROCEDURE:
CREATE PROCEDURE usp_INSERIR_ITEM_VENDA
@VENDA INT,
@PRODUTO VARCHAR(10),
@QUANTIDADE DECIMAL(8,2),
@PRECO DECIMAL(8,2),
@TOTAL_VENDA DECIMAL(8,2) OUTPUT --parâmetro de saída
AS
BEGIN
INSERT INTO ITENS_VENDA (VENDA, PRODUTO, QUANTIDADE, PRECO)
VALUES (@VENDA, @PRODUTO, @QUANTIDADE, @PRECO)
--atribui um valor ao parâmetro de saída
SELECT @TOTAL_VENDA = SUM(PRECO*QUANTIDADE) FROM ITENS_VENDA WHERE VENDA = @VENDA
END
GO
# CÓDIGO C#:
using (SqlCommand comando = conexao.CreateCommand())
{
comando.CommandType = CommandType.StoredProcedure;
comando.CommandText = usp_INSERIR_ITEM_VENDA;
comando.Parameters.AddWithValue(VENDA, venda);
comando.Parameters.AddWithValue(PRODUTO, produto);
comando.Parameters.AddWithValue(QUANTIDADE, quantidade);
comando.Parameters.AddWithValue(PRECO, preco);
//criando SqlParameter do tipo output
SqlParameter parTotal = new SqlParameter(TOTAL_VENDA, venda);
parTotal.Direction = ParameterDirection.Output;
//Adicionando ao SqlCommand
comando.Parameters.Add(parTotal);
//Executando o procedure
comando.ExecuteNonQuery();
//Após executar, o parâmetro possui um valor vindo do banco
decimal total = Convert.ToDecimal(parTotal.Value);
}
Bem, é isso. Qualquer dúvida, fique à vontade para perguntar.
Boa sorte.
28/02/2012
Thiago Garcez
Cmd = new FbCommand(ATUALIZAAGNWEB, Con);
Cmd.CommandType = CommandType.StoredProcedure;
Cmd.Parameters.Add(@PDtVisita, FbDbType.Date).Value = Convert.ToDateTime(a.dtvisita);
Cmd.Parameters.Add(@PCd_clb, FbDbType.Integer).Value = Convert.ToInt32(a.cd_clb);
Cmd.Parameters.Add(@PHorario, FbDbType.VarChar).Value = Convert.ToString(a.horario);
Cmd.Parameters.Add(@Pnmcliente, FbDbType.VarChar).Value = Convert.ToString(a.nmcliente);
Cmd.Parameters.Add(@PTelefone, FbDbType.VarChar).Value = Convert.ToString(a.telefone);
Cmd.Parameters.Add(@PBloq, FbDbType.VarChar).Value = 07:00;
Cmd.ExecuteNonQuery();
29/02/2012
Fabio Fim
02/03/2012
Thiago Garcez
Cmd = new FbCommand(AGENDAWEBGRAVAAGN, Con);
Cmd.CommandType = CommandType.StoredProcedure;
Cmd.Parameters.Add(@Data, FbDbType.Date).Value = Convert.ToDateTime(a.dtvisita);
Cmd.Parameters.Add(@Hora, FbDbType.VarChar).Value = Convert.ToString(a.horario);
Cmd.Parameters.Add(@Cd_cli, FbDbType.Integer).Value = Convert.ToInt32(a.cd_cli);
Cmd.Parameters.Add(@Cd_clb, FbDbType.Integer).Value = Convert.ToInt32(a.cd_clb);
Cmd.Parameters.Add(@srv1, FbDbType.Integer).Value = Convert.ToInt32(a.Srv1);
Dr = Cmd.ExecuteReader();
Dr.Read();
Executa e me retornar o falor correto, porém não grava no bando de dados.
se eu trocar o Dr = Cmd.ExecuteReader(); Dr.Read(); por
Cmd.Executenonquery();
Ele grava mais eu fico sem a informação da resposta
02/03/2012
Thiago Garcez
Dr = Cmd.ExecuteReader();
Dr.Read();
return Dr.GetInt32(0);
Ele grava mais eu fico sem a informação da resposta
Clique aqui para fazer login e interagir na Comunidade :)