2009/5/29 Fernando França <[email protected]>

> Boa tarde pessoal,
>
> Será que alguém pode me ajudar com a seguinte dúvida:
>
> Fiz uma função que encripta uma cadeia de caracteres passados, assim:
>
> CREATE OR REPLACE FUNCTION encrypt(phrase text) RETURNS SETOF text AS $$
>   DECLARE
>      phrase ALIAS FOR $1;
>      ret text;
>      i integer := 1;
>      j integer := length(phrase);
>
>   BEGIN
>      WHILE(i <= j) LOOP
>         ret := chr(ascii(substr(phrase, i, 1)) + i);
>         RETURN NEXT ret;
>         i := i + 1;
>      END LOOP;
>
>      RETURN;
>   END;
> $$ LANGUAGE plpgsql;
>
>

Caro Fernando,

Porque não fazer simplesmente:


CREATE OR REPLACE FUNCTION encrypt(phrase text) RETURNS text AS $$
  DECLARE
     phrase ALIAS FOR $1;
     ret text DEFAULT '';
     i integer := 1;
     j integer := length(phrase);

  BEGIN
     WHILE(i <= j) LOOP
        ret := ret || chr(ascii(substr(phrase, i, 1)) + i);
        i := i + 1;
     END LOOP;

     RETURN ret;
  END;
$$ LANGUAGE plpgsql;


bdteste=# SELECT encrypt('PostgreSQL');
  encrypt
------------
 Qqvxlxl[ZV
(1 row)


Fazendo dessa forma poderás utilizar:

INSERT INTO usuarios VALUES ('login', encrypt('senha'));


Cordialmente,

-- 
Fabrízio de Royes Mello
>> Blog sobre PostgreSQL: http://fabriziomello.blogspot.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a