PLS-00201: должен быть объявлен идентификатор DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT.

          key_string   varchar2(64) := '$0@!H&^%#8I^~!JYE&#$55JKH*(@#$^^';
    encrypted_string varchar2(2048);
    decrypted_string varchar2(2048);
    
    
function encrypt (input_string IN varchar2) return varchar2 is

   BEGIN
     encrypted_string :=null;
           

     dbms_obfuscation_toolkit.DESEncrypt(input_string =>pad(input_string),
                                       key_string   => key_string,
                                       encrypted_string=> encrypted_string);
     RETURN encrypted_string;                                      
   END;
   
function decrypt(input_string In varchar2) RETURN varchar2 IS
BEGIN
     decrypted_string :=null;
     encrypted_string :=null;
    
               

     dbms_obfuscation_toolkit.DESDecrypt(input_string => UTL_RAW.cast_to_varchar2(input_string),
                          key_string   =>key_string,
                                          decrypted_string=>decrypted_string);
    
    
    RETURN RTRIM(decrypted_string,'*');                                   
    
 END;
  END;```


после запуска я получаю эту ошибку в Oracle 21c, но в Oracle 18c она работает успешно.

Ошибка компиляции, строка 13 (17:55:27)PLS-00201: должен быть объявлен идентификатор 'DBMS_OBFUSCATION_TOOLKIT.DESENCRYPT' Ошибка компиляции, строка 13 (17:55:27)PL / SQL: инструкция проигнорирована Ошибка компиляции, строка 26 (17:55 : 27)PLS-00201: должен быть объявлен идентификатор 'DBMS_OBFUSCATION_TOOLKIT.DESDECRYPT' Ошибка компиляции, строка 26 (17:55:27) PL / SQL: инструкция проигнорирована

      

2 ответа

Именно DBMS_OBFUSCATION_TOOLKIT напрочь отсутствует в Oracle 21... СУБД отсутствует

Выглядит как привилегированный пользователь (например, SYS, если у вас нет другого) должен

      grant execute on DBMS_OBFUSCATION_TOOLKIT to your_user;
Другие вопросы по тегам