



Muitas vezes temos a necessidade de gerar arquivos ou relatórios de
modo simples e rápido.
E normalmente os dados são salvos sem a máscara no banco de dados.
Com esta simples stored procedure, podemos fazer nossas
consultas SQL já retornarem as informações formatadas.
Código da Stored Procedure: Para Firebird
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | SET TERM ^ ; CREATE OR ALTER PROCEDURE UTIL_APLICA_MASCARA ( IN_MASCARA VARCHAR(20), IN_TEXTO VARCHAR(100)) RETURNS ( OUT_RESULTADO VARCHAR(120)) AS DECLARE variable VLOOP INTEGER; DECLARE variable V_POS INTEGER; BEGIN IF ( (TRIM(:in_mascara) = '') OR (:in_mascara IS NULL) OR (:in_texto IS NULL) ) THEN BEGIN suspend; exit; END vloop = 1; v_pos = 1; out_resultado = ''; while (vloop <= CHAR_LENGTH(:in_mascara)) do BEGIN IF ((SUBSTRING(:in_mascara FROM :vloop FOR 1) IN ('.', '\', '/', '-', '(', ')', ' ', '|') )) then begin out_resultado = :out_resultado || substring(:in_mascara from :vloop for 1); end else begin out_resultado = :out_resultado || substring(:in_texto from :v_pos for 1); v_pos = v_pos + 1; end vloop = vloop + 1; end suspend; end^ SET TERM ; ^ |
Exemplos de uso:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | -- CPF SELECT u.out_resultado FROM util_aplica_mascara('999.999.999-99', '94461023249') u -- CNPJ SELECT u.out_resultado FROM util_aplica_mascara('99.999.999/9999-99', '92441217000155') u -- CEP SELECT u.out_resultado FROM util_aplica_mascara('99.999-999', '99200000') u -- TELEFONE SELECT u.out_resultado FROM util_aplica_mascara('(99) 9999-9999', '5434439621') u -- uso geral (REFERENCIAS) SELECT u.out_resultado FROM util_aplica_mascara('99.9999.99.9999', '012345678901') u |