Eduardo,

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:
PUBLICIDADE


Links do Yahoo! Grupos

Responder a