Jetez un oeil à CAST_TO_RAW Documentation :
Vous devriez utiliser celui-ci :
base64DecodedInput:= UTL_ENCODE.base64_decode(UTL_RAW.CAST_TO_RAW(TO_CHAR(valueToDecrypt)));
DBMS_OUTPUT.PUT_LINE ( 'Base64 decoded is: ' || base64DecodedInput);
00010203040506074DBBEAB1D9972AB0
Lequel (formaté) doit être égal au résultat souhaité :
00 01 02 03 04 05 06 07 4D BB EA B1 D9 97 2A B0
Il est tout à fait inutile d'utiliser NVARCHAR2
pour une chaîne BASE64. Le but principal du codage BASE64 est de représenter des données arbitraires uniquement avec des caractères ASCII, donc NVARCHAR2 n'a aucun sens. Étant donné que BASE64 ne contient que de l'ASCII, vous n'avez pas à vous soucier de l'encodage des caractères à CAST(... AS VARCHAR2(200))
.
Bien sûr, pour les décodés type de données de chaîne NVARCHAR2
pourrait être très utile.