Saltar al contenido

¿Oracle STANDARD_HASH no está disponible en PLSQL?

Solución:

Parece que todavía no es parte de PL / SQL en 12c.

Como solución alternativa, utilice SELECT INTO en PL / SQL:

SQL> set serveroutput on
SQL> DECLARE
  2    str VARCHAR2(40);
  3  BEGIN
  4    SELECT STANDARD_HASH('test') INTO str FROM dual;
  5    dbms_output.put_line(str);
  6  END;
  7  /
A94A8FE5CCB19BA61C4C0873D391E987982FBBD3

PL/SQL procedure successfully completed.

SQL>

Sugeriría a crear una funcióny utilícelo siempre que lo necesite en PL / SQL.

Por ejemplo,

SQL> CREATE OR REPLACE FUNCTION STANDARD_HASH_OUTPUT(str IN VARCHAR2)
  2    RETURN VARCHAR2
  3  AS
  4    op VARCHAR2(40);
  5  BEGIN
  6    SELECT STANDARD_HASH(str) INTO op FROM dual;
  7    RETURN op;
  8  END;
  9  /

Function created.

Llama a función directamente en Bloque PL / SQL:

SQL> BEGIN
  2     dbms_output.put_line(STANDARD_HASH_OUTPUT('test'));
  3  END;
  4  /
A94A8FE5CCB19BA61C4C0873D391E987982FBBD3

PL/SQL procedure successfully completed.

SQL>

Para el texto, STANDARD_HASH es lo mismo que DBMS_CRYPTO.HASH con SHA1:

begin
  dbms_output.put_line(dbms_crypto.hash(cast('test' as clob), dbms_crypto.hash_sh1));
end;
/

Producción:

A94A8FE5CCB19BA61C4C0873D391E987982FBBD3

Para otros tipos de datos, no está documentado cómo se pasan a la función hash.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *