Fórum Texto no Oracle #451743
13/08/2013
0
Tenho uma tabela com um campo VARCHAR(15) no Firebird e estou testando com o VARCHAR2(15) no Oracle. No referido campo, tenho um registro que armazena o texto "00017/03". Ao fazer a consulta "select * from TABELA where CAMPO = '00017/03'", no Firebird retorna tranquilo, porém no Oracle ele me retorna que é uma data inválida. Tem como forçar o Oracle a tratar o campo como texto(mesmo com a barra "/") e me trazer o resultado correto?
Rogerio Martins
Curtir tópico
+ 0Posts
14/08/2013
Jair N.
tenho uma tabela com um campo varchar(15) no firebird e estou testando com o varchar2(15) no oracle. no referido campo, tenho um registro que armazena o texto "00017/03". ao fazer a consulta "select * from tabela where campo = '00017/03'", no firebird retorna tranquilo, porém no oracle ele me retorna que é uma data inválida. tem como forçar o oracle a tratar o campo como texto(mesmo com a barra "/") e me trazer o resultado correto?
Boa Tarde, isso está muito estranho, o tipo VARCHAR está retornando como tipo DATE, numa consulta ou no seu aplicativo?
A conversão de um tipo VARCHAR() o oracle aceita VARCHAR2() ou texto como CLOB
Não existe a possibilidade de o banco fazer a comparação do tipo específico com outro reveja seus procedimentos.
Gostei + 0
14/08/2013
Rogerio Martins
Gostei + 0
14/08/2013
Deivison Melo
Nunca vi problemas desse tipo no oracle, a não ser que o esteja forçando uma conversão para data e aí o oracle vai apresentrar erros mesmo, mas conforme mencionado por você, está gravando varchar(15) e lendo varchar2(15) que a grosso modo os campos teriam o mesmo tipo de dados.
Posta a estrutura de sua tabela e também o select exato que está sendo utilizado para a consulta.
Gostei + 0
14/08/2013
Rogerio Martins
CREATE TABLE "SERVI_VINCU"
( "CODIG_VINCU" VARCHAR2(15) NOT NULL ENABLE,
"SITUA_SERVI" CHAR(1),
PRIMARY KEY ("CODIG_VINCU") ENABLE)
Instrução:
assim dá o erro
select SV.* from SERVI_VINCU SV where SV.CODIG_VINCU = '0017/03'
assim dá certo(inclusive quando coloco alguma letra junto)
select SV.* from SERVI_VINCU SV where SV.CODIG_VINCU = 'ABC0017/03'
select SV.* from SERVI_VINCU SV where SV.CODIG_VINCU = '0017-03'
Segue a função que retorna a Conexão Utilizando Visual C# 2005 ExpressEdition:(Obs.: faz uns 7 anos que utilizo apenas Firebird com o mesmo código)
public IDbConnection getConexao()
{
IDbConnection conn = null;
try
{
switch (this.BancoDados)
{
case Banco.MySQL:
conn = new MySql.Data.MySqlClient.MySqlConnection(
"server=" + this.Path + ";user id=" + this.Usuario +
";password=" + this.Senha + ";database=" + this.NomeBD);
break;
case Banco.Firebird:
conn = new FirebirdSql.Data.FirebirdClient.FbConnection(
"User=" + this.Usuario + ";Password=" + this.Senha +
";Database=" + this.Path + ";DataSource=localhost;Port=3050;Dialect=3;");
break;
case Banco.Oracle:
conn = new System.Data.OracleClient.OracleConnection("Data Source=localhost;User Id=teste;Password=123;");
break;
}
}
catch (Exception e)
{
MessageBox.Show("Erro ao tentar conectar. Erro : " + e.ToString());
return null;
}
return conn;
}
Gostei + 0
15/08/2013
Rogerio Martins
Tinha feito uma função para ajustar a instrução SQL para data caso fosse Oracle dentro da função que retorna meu IDataReader(genérico que retornava a do Banco conforme o Banco selecionado). Essa função aparecia em uma linha e tava passando sem eu perceber. Descobrir ao fazer uma conexão sem as funções utilizando apenas as do Oracle sem me preocupar com o MultiBanco e não retornava erro.
Agradeço a todos pelo apoio
Gostei + 0
15/08/2013
Deivison Melo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)