http://imasters.uol.com.br/artigo/2410 (nem sei se pode "divulgar" outros sites)
então comecei a tentar a fazer a validacao do DV atráves de um só select. Depois de um bom tmepo consegui chegar a esse resultado ( baseado no CPF de numero 222333666 assim como está no site)
Segue o select:
SELECT (222333666||'-'||DIG1||DIG2) CPF, DIG1||DIG2 "DIGITO VERIFICADOR"
FROM
(SELECT DECODE(M2,0,0,1,0,2,0,(11-M2)) DIG2, DIG1
FROM
(SELECT MOD((SUBSTR(222333666||DIG1,1,1)*11)+
(SUBSTR(222333666||DIG1,2,1)*10)+
(SUBSTR(222333666||DIG1,3,1)*9)+
(SUBSTR(222333666||DIG1,4,1)*8)+
(SUBSTR(222333666||DIG1,5,1)*7)+
(SUBSTR(222333666||DIG1,6,1)*6)+
(SUBSTR(222333666||DIG1,7,1)*5)+
(SUBSTR(222333666||DIG1,8,1)*4)+
(SUBSTR(222333666||DIG1,9,1)*3)+
(SUBSTR(222333666||DIG1,10,1)*2),11) M2, DIG1
FROM
(SELECT DECODE(M1,0,0,1,0,2,0,(11-M1)) DIG1
FROM
(select MOD((substr(222333666,1,1)*10)+
(substr(222333666,2,1)*9)+
(substr(222333666,3,1)*8)+
(substr(222333666,4,1)*7)+
(substr(222333666,5,1)*6)+
(substr(222333666,6,1)*5)+
(substr(222333666,7,1)*4)+
(substr(222333666,8,1)*3)+
(substr(222333666,9,1)*2),11) M1
from dual))))
/
Queria saber se tem outros caminhos para fazer esse select ou só do jeito que está já está bom.?? . Gosto sempre de saber das outras alternativas.
O B R I G A D A A T O D O S !!!