Postagens

Mostrando postagens com o rótulo Oracle

ORA-01843: not a valid month

Imagem
Estou aqui de novo para comentar problemas relacionados ao desenvolvimento com Oracle, e como eles foram resolvidos. Na equipe que trabalho entrou uma pessoa nova, e precisamos instalar o cliente do Oracle para que ele pudesse trabalhar. Após feita a instalação do Oracle Instant Client , quando ele começou a executar o sistema na sua máquina, o seguinte erro apareceu: ORA-01843: not a valid month . Detalhe que quando a mesma rotina era executada na minha máquina, eu não tinha esse problema. Após algumas pesquisas, identificamos a causa. No banco de dados que estamos utilizando, a configuração de formato de data está parametrizado para dia/mês/ano: select * from nls_database_parameters; NLS_LANGUAGE                          AMERICAN NLS_TERRITORY                          AMERICA NLS_CURRENCY             ...

TransactionScope e Invalid operation. The connection is closed no Oracle

Tudo na vida acontece por uma razão, e quando a gente não entende a razão considera que é magia. Digo isso por um problema que estava tendo em uma aplicação ASP.NET que usa banco de dados Oracle. Em determinada funcionalidade, um processamento com gravação, ocorria um problema que impedia a gravação dos registros. O erro era: System.InvalidOperationException: Invalid operation. The connection is closed.    at System.Data.OracleClient.OracleConnection.GetOpenInternalConnection()    at System.Data.OracleClient.OracleConnection.get_ErrorHandle()    at System.Data.OracleClient.OracleDataReader.ReadInternal()    at System.Data.OracleClient.OracleDataReader.Read()    at Microsoft.Practices.EnterpriseLibrary.Data.Oracle.OracleDataReaderWrapper.Read() Simplesmente eu não entendia a causa desse erro ( neste momento chamado de "magia"), pois o código que rodava essa consulta (sim, consulta, pois você pode ver que na stacktrace estamos usa...

Executar procedure no Oracle que retorne dados como um cursor do tipo OUT

Nota rápida: no Oracle, stored procedures que retornam dados de tabelas (result sets) vem na forma de cursores (diferente do SQL Server que vem direto). Para poder ver o resultado da execução de uma procedure de SELECT no Oracle, usa-se o comando abaixo:     var refCur REFCURSOR;     execute NOME_PACKAGE.NOME_PROCEDURE(283, 3507, :refCur);     print :refCur; Sendo que a nossa procedure de exemplo tem três parâmetros: dois inteiros e um cursor do tipo OUT (abaixo está o detalhamento da sua declaração):     PROCEDURE NOME_PROCEDURE(pID_X IN TB_ABC.ID_X%TYPE,                                           pID_Y IN TB_XYZ.ID_Y%TYPE,                                           pCURSOR_SAIDA OUT CURSOR_SAIDA); []'s

Configurando conexão com Oracle através de TNS - básico

Havia trabalhado com Oracle alguns anos atrás, e pra mim esse SGBD tem muita coisa desconhecida... Precisei pegar um projeto onde que usa esse banco de dados. Meu primeiro "desafio" foi entender como fazer para configurar o client do Oracle para poder conectar a aplicação ASP.NET na base de dados. Isso deve ser o básico do básico para quem trabalha com Oracle, mas como pra mim é novidade, decidi deixar isso documentado no blog já que a idéia original dele é ser uma knowledge base pessoal (apesar que eu admito, não sou tão frequente com os posts como eu gostaria de ser). Bom, em primeiro lugar, eu precisei baixar os componentes client do Oracle. Isso eu fiz baixando os componentes do Instant Client e os colocando na pasta C:\oracle\instantclient_10_2\ (o link de onde baixei está logo abaixo). Esse Instant Client é um conjunto de componentes que permite a execução de aplicações que consomem bases Oracle sem a necessidade de fazer a instalação completa do cliente, através de s...