Pakiet DBMS_CRYPTO jest poprawnym pakietem do generowania skrótów. Nie jest domyślnie przyznana PUBLIC, musisz ją przyznać konkretnie (GRANT EXECUTE ON SYS.DBMS_CRYPTO TO user1 ).
Wynikiem tej funkcji jest typ danych RAW . Możesz go przechowywać w RAW kolumna lub przekonwertuj ją na VARCHAR2 za pomocą RAWTOHEX lub UTL_ENCODE.BASE64_ENCODE funkcje.
HASH funkcja jest przeciążona, aby zaakceptować trzy typy danych jako dane wejściowe:RAW , CLOB i BLOB . Ze względu na zasady niejawnej konwersji, jeśli używasz VARCHAR2 jako dane wejściowe Oracle spróbuje przekonwertować go na RAW i najprawdopodobniej się nie powiedzie, ponieważ ta konwersja działa tylko z ciągami szesnastkowymi.
Jeśli używasz VARCHAR2 następnie musisz przekonwertować dane wejściowe na binarny typ danych lub CLOB , na przykład :
DECLARE
x RAW(20);
BEGIN
SELECT sys.dbms_crypto.hash(utl_raw.cast_to_raw(col1||col2||to_char(col3)),
sys.dbms_crypto.hash_sh1)
INTO x
FROM t;
END;
dodatkowe informacje znajdziesz w dokumentacji DBMS_CRYPTO.hash