Estou migrando um sistema do postgreSQL para o oracle.
Problema:
O sistema é relativamente grande e tem muitas variáveis booleanas.
Logo, vários mapeamentos do hibernate usam o tipo boolean.
Tem bastante relatórios jasper utilizando sql onde uso condições de booleanos.
EX: “select * from tabela where status” (status = atributo tipo boolean)
O que posso fazer para fazer para migrar sem alterar o software? exceto as configurações de conexão, é claro.
Já dei até uma sondada sobre criação de “Object Types”.
Alguém sabe de uma maneira de criar um tipo, ou mesmo simular o tipo boolean no oracle??
Outra coisa:
Quando faço um select no postgresql
EX: select * from schema.tabela
No oracle não funciona, diz que a tabela ou view não existe.
Porém se faço: select * from schema.“tabela” (com aspas)
Funciona.
Acredito que isso não deva ter jeito… vou ter de mudar, pois o postgresql aceita tanto com aspas como sem.
O tal do oracle é muito intransigente. rsrsrsrs
A tabelas foram criadas erradas. Faz um teste assim.
create table "Teste1" (
campo varchar2(10)
)
create table Teste2 (
campo varchar2(10)
)
Você verá que a tabela Teste2 você não precisa usar aspas, pode escrever em maiuscula ou minuscula que funciona, já a Teste1 não.
Sobre o campo boolean, lamento em informar, mas senta e chora, não tem como você vai ter que mudar tudo para number(1) e fazer where campo = 1
Falou.
Criei as tabelas no EMS SQL Manager…
Vou verificar essa questão das aspas… Valeu!
Gera um arquivo de script no PG, dar uns find & replace e roda no Oracle.
Te garanto que dar muito menos dor de cabeça.
santoro
Fevereiro 24, 2010, 5:37pm
#6
Se precisar de ajuda em Oracle se cadastra no BOUG - www.boug.com.br
Outro probleminha:
Quando crio atributos tipo INT ou INTEGER,
o oracle cria como NUMBER
até aí tudo bem, porém, quando eu preciso fazer uma divisão
no próprio sql como numero INTEIRO, ele considera casas decimais…
EX: 10/3 = 3
NO ORACLE (NUMBER): 10/3 = 3.333
tem algum tipo de dados que seja INTEIRO no oracle???
ou LONG???
parece que o oracle não tem muitos adeptos aqui…
O tipo number aceita casas decimais.
O tipo number(x) ou number(x, 0) que não aceita.
Existe o tipo Integer, mas esta em desuso.
Porém mesmo com o tipo integer você vai ter esse problema, afinal você esta mandando um numero com casas decimais para um campo que não suporta.
Um solução seria usar trunc(numero) para retirar as casas decimais.
Obrigado amigo…
Esqueci de encerrar o tópico… Resolvi exatamente assim, com trunc().
Mas valeu mesmo assim!!!