quarta-feira, 21 de abril de 2010

Executar uma Stored Procedure no Asp.NET

Abaixo, coloco um tutorial de como executar uma stored procedure (sem retorno) diretamente em um botão de um WebForm. O primeiro passo é gravar em uma variável a string de conexão atual, para ser usada na Stored Procedure. Para isso, você deverá adicionar o namespace Configuration.

using System.Configuration;

Em seguida, utilizamos o ConfigurationManager para carregar a string:

String strOra = ConfigurationManager.ConnectionStrings["exemplo"].ConnectionString;

Agora, com a string de conexão em mãos, vamos estabelecer uma conexão com o banco de dados Oracle:

OracleConnection conn = new OracleConnection(strOra);
conn.Open();


Com a aplicação já conectada ao banco, devemos criar um novo OracleCommand, que carregará a Stored Procedure a ser usada e possibilitará setar seus parametros:

var cmd = new OracleCommand("USUARIO.PROCEDURE", conn);
cmd.CommandType = CommandType.StoredProcedure;


Repare que passamos a conexão (variável conn) como parametro para o OracleCommand. Agora, precisamos definir os parâmetros da procedure e passar os valores:

cmd.Parameters.Add("Parametro", OracleDbType.Decimal, 11);
cmd.Parameters["Parametro"].Value = decimal.Parse(Valor);


Repare que quando adicionamos um parametro, devemos definir o seu tipo, escolhendo um dentro das opções contidas na classe OracleDBType. Os tipos possíveis aqui são os mesmos que estamos acostumados a utilizar no Oracle. Deve ser informado também o tamanho máximo para o parâmetro. Em seguida, podemos passar o valor para a procedure, setando a propriedade value.

Agora, resta apenas executar a procedure, lembrando-se sempre de criar um tratamento de erro. Neste exemplo, se um erro acontecer, ele será mostrado em um label na página:

try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Label1.Text = ex.Message.ToString();
}
finally
{
conn.Dispose();
}

O método ExecuteNonQuery é usado pois a procedure não retornará nenhum valor. Ele pode ser utilizado também quando estivermos executando um comandos UPDATE, INSERT OU DELETE. É muito importante também encerrar a conexão, utilizando o método Dispose.

Nenhum comentário:

Postar um comentário