Spójrz na CAST_TO_RAW Dokumentacja:
Powinieneś użyć tego:
base64DecodedInput:= UTL_ENCODE.base64_decode(UTL_RAW.CAST_TO_RAW(TO_CHAR(valueToDecrypt)));
DBMS_OUTPUT.PUT_LINE ( 'Base64 decoded is: ' || base64DecodedInput);
00010203040506074DBBEAB1D9972AB0
Który (sformatowany) powinien być równy pożądanemu wynikowi:
00 01 02 03 04 05 06 07 4D BB EA B1 D9 97 2A B0
Używanie NVARCHAR2
jest całkiem bezużyteczne dla ciągu BASE64. Głównym celem kodowania BASE64 jest reprezentowanie dowolnych danych tylko za pomocą znaków ASCII, więc NVARCHAR2 nie ma sensu. Ponieważ BASE64 zawiera tylko ASCII, nie musisz się martwić o kodowanie znaków w CAST(... AS VARCHAR2(200))
.
Oczywiście dla dekodowanych typ danych ciągu NVARCHAR2
może być bardzo przydatne.