Pular para o conteúdo

Fóruns SQL e PL/SQL Comando Select Comando Select

#77894
Fontalva
Participante

    Essa funçãozinha ai usa quase tudo o que voce precisa, só não sei como voce poderia empregar o REPLACE, mas o resto faz tudo.


    Create Or Replace Function incriptaValidaSenha(p_senha In Varchar2) Return Varchar2 Is
    V_SENHA Varchar2(6);

    V_CHARS Varchar2(4);
    V_NUMS Number(2):= 0;
    V_CONT_2Nums Boolean;
    v_tot_num Number(1) := 0;
    v_tot_char Number(1) := 0;
    v_incript Varchar2(6);

    Begin
    V_SENHA := Trim(P_SENHA);

    For X In 1..LENGTH(V_SENHA) Loop
    If substr(v_senha, x, 1) In ('1','2','3','4','5','6','7','8','9','0') Then
    v_tot_num := v_tot_num + 1;
    Else
    v_tot_char := v_tot_char + 1;
    End If;
    End Loop;

    If v_tot_num = 2 And v_tot_char = 4 Then
    Select translate(upper(v_senha),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','-,º_+!@#$%¨*()£ÿÖØø¤Ü¿Ô') Into v_incript From dual;
    v_incript := translate(v_incript,'0123456789','abcdefghi');
    End If;

    Return v_incript;
    Exception When Others Then
    DBMS_OUTPUT.PUT_LINE('Numero de caracteres excede os 6 digitos'||Sqlcode);--> Caso tenha sido digitado mais de 6 caracteres

    End;