Se ainda der tempo de dar uma opinião, estava lendo agora os emails de ontem
(feriado em Goiânia) e gostaria de passar como fazemos por aki.
Escreva uma função para fazer a formatação com o código do CASE que vc está
usando, onde o retorno da função seria um varchar.
Assim, o código do sql ficaria bem mais simples e poderia ser assim:
SELECT FORMATA_CGCCPF(TIPCLI,CGCCPF), TIPCLI, CODCLI, NOMCLI
FROM EO85CLI;
A função seria (escrevi agora, não compilei):
Create or replace function formata_cgccpf (tipo in varchar2, w_cgccpf in
number) return varchar2
Declare
Retorno varchar2(20);
Begin
If tipo = 'F' then
Retorno := substr(lpad(to_char(w_cgccpf),11,'0'),01,3)||'.'||
substr(lpad(to_char(w_cgccpf),11,'0'),04,3)||'.'||
substr(lpad(to_char(w_cgccpf),11,'0'),07,3)||'-'||
substr(lpad(to_char(w_cgccpf),11,'0'),10,2);
else
Retorno := substr(ltrim(to_char(w_cgccpf,'09999999999999')),01,2)||'.' ||
substr(ltrim(to_char(w_cgccpf,'09999999999999')),03,3)||'.' ||
substr(ltrim(to_char(w_cgccpf,'09999999999999')),06,3)||'/' ||
substr(ltrim(to_char(w_cgccpf,'09999999999999')),09,4)||'-' ||
substr(ltrim(to_char(w_cgccpf,'09999999999999')),13,2;
end if;
return retorno;
End formata_cgccpf;
A função é bem simples, mas como vc pode ver, foi usado o IF. Utilizo isto
quando sempre que preciso testar várias condições e o CASE fica improdutivo,
como concatenar variáveis, ler de outras tabelas, fazer um
DIVIDIR_PARA_CONQUISTAR, etc.
Ederson Elias de Oliveira
DBA Oracle
Setransp - Goiânia-GO
-------------------------------------------------------------------
-----Mensagem original-----
De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de Eduardo - Wat Alimentos Ltda
Enviada em: quarta-feira, 24 de maio de 2006 08:00
Para: [EMAIL PROTECTED]
Cc: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Re: [OraOracle] Re: select if ..
Kristmax,
poxa meu .. valeu mesmo, funcionou !!!... fiz da seguinte forma:
SELECT (CASE WHEN TIPCLI='F' THEN
substr(lpad(to_char(cgccpf),11,'0'),01,3)||'.'||
substr(lpad(to_char(cgccpf),11,'0'),04,3)||'.'||
substr(lpad(to_char(cgccpf),11,'0'),07,3)||'-'||
substr(lpad(to_char(cgccpf),11,'0'),10,2)
ELSE
substr(ltrim(to_char(cgccpf,'09999999999999')),01,2)||'.' ||
substr(ltrim(to_char(cgccpf,'09999999999999')),03,3)||'.' ||
substr(ltrim(to_char(cgccpf,'09999999999999')),06,3)||'/' ||
substr(ltrim(to_char(cgccpf,'09999999999999')),09,4)||'-' ||
substr(ltrim(to_char(cgccpf,'09999999999999')),13,2) END )as CGCCPF, tipcli,
CODCLI, NOMCLI
FROM E085CLI
abs.
--------------------------------------------------------------------------------------------------------------------------
Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________
Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine
__________________________________________________________________
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o link do mesmo para evitar trafego(pedidos) desnecessário.
Yahoo! Grupos, um serviço oferecido por: | |
|
Links do Yahoo! Grupos
- Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/oracle_br/
- Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]
- O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.