CREATE OR REPLACE FUNCTION "DECRYPT4" (
       p_bsm in varchar2
)
 return varchar2 IS
  l_data2 varchar2(255);
  l_key varchar2(100);
  opencmd varchar2(2000);
begin  if p_bsm is null then
      return '';
     end if;
 opencmd:='alter system set encryption wallet open authenticated by "tddj"';
  execute immediate opencmd;select magic_key into l_key from decrypt_key;
 dbms_obfuscation_toolkit.DESDecrypt
            ( input_string => p_bsm,
            key_string   => l_key,
            decrypted_string=> l_data2 );  l_data2 := rtrim( l_data2, chr(0) );
   return(l_data2);
end DECRYPT4;我在调用这个函数的时候提示“在查询或DML中无法执行DDL,提交或回退”,主要是“opencmd:='alter system set encryption wallet open authenticated by "tddj"';
  execute immediate opencmd;”这个语句的问题吧 但是我不知道该怎么写  求教