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.
quarta-feira, 21 de abril de 2010
terça-feira, 20 de abril de 2010
Livro sobre ODP
Pesquisando na web, descobri este livro sobre o uso do ODP. Infelizmente esta em inglês, mas aparentemente não existe edição nacional. Para baixar, clique na imagem:
Configurando uma conexão eficiente com o ODP
Quando criamos uma conexão com o banco Oracle utilizando o Oracle Data Provider, é importante configurarmos alguns parâmetros em suas configurações avançadas, para evitar lentidão e perda de performance devido ao uso contínuo da aplicação, seja ela desktop ou web. Elas são referentes ao funcionamento do pool de conexões, que melhora a performance do acesso entre o .Net e o Oracle.
Min Pool Size: Define o número mínimo de conexões que farão parte do pool de conexões. Quando o pool de conexões é criado pela primeira vez, ele mantém em cache este número de conexões, mesmo que nenhuma conexão tenha sido solicitada.
Max Pool Size: Define o número máximo de conexões que podem ser mantidas no pool.
Connection Lifetime: Define a duração máxima (em segundos) de uma conexão no cache do pool de conexões. É importante lembrar, porém, que sempre que possível, você deve fechar uma conexão sempre que ela não for mais necessária.
Incr Pool Size: Define o número de conexões que devem ser adicionadas ao cache do pool sempre que novas conexões forem necessárias.
Decr Pool Size: O serviço de pool de conexões encerra automaticamente conexões não usadas a mais de 3 minutos. Este atributo define o número máximo de conexões que podem ser fechadas a cada vez que esse evento ocorre.
Segue abaixo uma sugestão de configuração, feita baseada nos dados disponíveis no livro Pro ODP .Net for Oracle Database 11g, fonte das informações deste post:
Clique na imagem para ampliar
Assinar:
Comentários (Atom)