Olá a todos, eu estou fazendo alguns selects em uma base Oracle para gerar um arquivo para exportacao, acontece que determinados campos tem que possuir determinados numeros de caracteres, por exemplo o campo nome, no layout de exportacao ele deve conter obrigatoriamente 70 caracteres, o resto completado automaticamente com espacos em brancos. Para fazer isto no oracle é muito facíl, basta eu agir desta maneira:
SELECTLPAD(NOME_CLIENTE,70,' ')FROMCLIENTES
Isto no SqlWorksheet do Oracle me retorna a string que eu preciso com 70 caracteres.
Acontece que se eu colocar esta sql no jdbc, o mesmo interpreta como se o lpad fosse uma coluna, alguê a infrentou este problema ?
Ola Luca obrigado pela resposta, abaixo segue o código:
O v_clientes é uma view.
[s]
danieldestro
Ou você pega o valor pelo indice ou pelo nome.
Se quiser mudar o nome da coluna:
SELECTLPAD(NOME_CLIENTE,70,' ')ASNOMEFROMCLIENTES
FSRech
[quote=danieldestro]Ou você pega o valor pelo indice ou pelo nome.
Se quiser mudar o nome da coluna:
SELECTLPAD(NOME_CLIENTE,70,' ')ASNOMEFROMCLIENTES
Olá Amigo obrigado pela resposta, é que eu preciso fazer um lpad das strings retornadas do banco, tipo o nome vem do banco com 35 caracteres, eu preciso preencher o restante com 35 espacos em branco.
O meu problema realmente é que este select nao funciona com o jdbc.
[s]
danieldestro
Certamente você está fazendo algo errado.
Qual o erro?
FSRech
danieldestro:
Certamente você está fazendo algo errado.
Qual o erro?
é provavel que eu esteja fazendo algo errado mesmo, mas o estranho que no sql do oracle funciona, olha abaixo o erro:
publicvoidlistar()throwsException{Connectionconn=null;try{Class.forName("oracle.jdbc.driver.OracleDriver");conn=DriverManager.getConnection("jdbc:oracle:thin:@<host>:<porta>:<nome_do_banco>","<conta>","<senha>");PreparedStatementps=conn.prepareStatement("select lpad(campo,70,'@') as t from <tabela> where rownum < 10");ResultSetrset=ps.executeQuery();while(rset.next()){System.out.println(rset.getString(1));}rset.getStatement().close();rset.close();}catch(Exceptione){throwe;}finally{if(conn!=null)conn.close();}}
Mesmo executando essa consulta numa view também funcionou.
FSRech
julianostr:
Fiz um exemplo aqui e rodou sem problemas:
publicvoidlistar()throwsException{Connectionconn=null;try{Class.forName("oracle.jdbc.driver.OracleDriver");conn=DriverManager.getConnection("jdbc:oracle:thin:@<host>:<porta>:<nome_do_banco>","<conta>","<senha>");PreparedStatementps=conn.prepareStatement("select lpad(campo,70,'@') as t from <tabela> where rownum < 10");ResultSetrset=ps.executeQuery();while(rset.next()){System.out.println(rset.getString(1));}rset.getStatement().close();rset.close();}catch(Exceptione){throwe;}finally{if(conn!=null)conn.close();}}
Mesmo executando essa consulta numa view também funcionou.
o meu está do mesmo jeito e não funciona, coisa de louco!
FSRech
olha so como está:
dreamspeaker
Cara. como está o seu getString(…)?
danieldestro
Faça assim:
String valor = rs.getString(1);
ou
String valor = rs.getString(“t”);
Creio que esteja errando ai.
J
julianostr
Era isso mesmo que eu iria perguntar agora.
Como está o rs.getString() ??
Demorei pra colocar a pergunta…dá nisso…
FSRech
Bom dia a todos! Realmente eu errei isto mesmo, mas aproveitando, quando eu coloco o getString(1) ele me retorna corretamente, mas digamos e eu precisar fazer um select de varios campos, ex:
quanto eu faco o getString(1) desta query, ele me retorna logicamente a primeira coluna, o nome.
Tem como eu fazer um getString() de todo o resultado?
GraveDigger
FSRech:
Bom dia a todos! Realmente eu errei isto mesmo, mas aproveitando, quando eu coloco o getString(1) ele me retorna corretamente, mas digamos e eu precisar fazer um select de varios campos, ex:
Bom dia a todos! Realmente eu errei isto mesmo, mas aproveitando, quando eu coloco o getString(1) ele me retorna corretamente, mas digamos e eu precisar fazer um select de varios campos, ex: